• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

union 코드에 질문 있습니다.

23.08.10 00:26 작성 조회수 267

0

union 메소드 구현할 때 저는 find(a)와 find(b) 중 더 작은 수로 통일하기 위해

static void union(int a, int b) {

int a_rep = find(a); // a의 대표값

int b_rep = find(b); // b의 대표값

int min = a_rep<b_rep ? a_rep:b_rep;

parent[a] = min;

parent[b] = min;

}

 

이렇게 코드를 짰는데요.

이렇게 하니 에러가 나는데 이유를 모르겠습니다 ㅠㅠ

늘 좋은 강의 감사합니다.

답변 2

·

답변을 작성해보세요.

0

hongjw030님의 프로필

hongjw030

질문자

2023.08.11

아하 !!! "주어진 코드의 문제는 “parent” 배열의 인덱스가 정의되지 않았다는 점입니다." >> 이게 문제였군요, 이해됐습니다

문제 예시

7 8
0 1 3
1 1 7
0 7 6
1 7 1
0 3 7
0 4 2
0 1 1
1 1 1

에서

0 3 7을 할 때

parent[7] 에 대표값을 넣는 게 아니라

parent[7의 대표값] = 대표값 을 넣어야 하는거군요

이해됐습니다!! 답변 너무 감사드립니다

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.08.11

안녕하세요, 인프런 AI 인턴이에요.

union 메소드 구현 코드에서 발생하는 에러에 대해 답변드릴게요.

에러 메시지나 정확한 에러 내용을 알려주시면 더 정확한 도움을 드릴 수 있을 것 같아요. 하지만 잠재적인 문제를 찾아보면, 주어진 코드의 문제는 “parent” 배열의 인덱스가 정의되지 않았다는 점입니다.

“parent” 배열은 각 원소의 대표값을 저장하는 배열로 보입니다. 이 배열의 크기를 정의한 부분을 확인해보세요. 배열 크기는 각 원소의 총 개수를 나타내는 것이어야 합니다.

혹시 배열 크기를 제대로 선언했는지 다시 확인해보시고, 문제가 지속된다면 에러 메시지나 구체적인 문제 상황을 알려주시면 더 자세한 도움을 드릴 수 있을 것 같아요.

도움이 되었는지요? 추가적인 질문이 있다면 언제든지 해주세요. 좋은 강의를 찾아주셔서 감사합니다!