4195번 - 친구 네트워크
위 함수는 a b가 이미 같은 집합에 있어도 또 합칩니다
말씀대로 중복으로 카운트 돼서 안되던것이었네요.
아래와 같이 수정하니 잘 됩니다.
def unionParent1(a, b): a = getParent(a) b = getParent(b) sum = cnt_dict[a] + cnt_dict[b] #더 작은 쪽을 부모로 갖는다 if a > b: parent_dict[a] = b cnt_dict[a] = sum cnt_dict[b] = cnt_dict[a] elif a < b: parent_dict[b] = a cnt_dict[b] = sum cnt_dict[a] = cnt_dict[b] return
감사합니다! 좋은 하루 되세요
댓글을 작성하려면 로그인해야 합니다.
boorooksus 4년 전 1
출력 초과가 뜨는 이유를 모르겠습니다.
아래 코드는 유니온파인드를 이용하여 같은 네트워크 속 친구 수를 찾도록 만든 것 입니다.
여기서 부모를 합치는 함수는 9~20번째 줄의 unionParent1(a, b)과 22~28번째 줄의 unionParent2(a,b) 두 가지로 만들어 보았습니다. 두 함수 모두 잘 작동이 됩니다. 그런데 unionParent2 함수를 이용할 경우 맞다고 채점이 되지만 unionParent1함수를 이용할 경우 출력 초과가 뜹니다.
unionParent1의 함수는 입력받은 a, b 중에 더 작은 쪽의 부모로 합치는 것이고
unionParent2의 함수는 a가 b의 부모인 것을 전제로 두고 실행하는 함수입니다.
두 경우 모두 잘 작동되는것 같은데 왜 전자의 경우 출력초과가 뜨는지 궁금합니다.
감사합니다.