dashadower   1년 전

Union-find를 바로 구현해면 쉽게 풀리는 문제로 알고있는데 어떤 부분에서 잘못된건지 못찾겠습니다 ㅠㅠ.

jyheo98   1년 전

UF 구현에 실수가 있습니다.

if parent_x < parent_y:
parent[y] = parent_x
else:
parent[x] = parent_y

->

if parent_x < parent_y:
parent[parent_y] = parent_x
else:
parent[parent_x] = parent_y

dashadower   1년 전

아하..해당 실수를 못봤네요!

정말 감사합니다!!

jyheo98   1년 전

python 3보단 pypy3가 더 빨라서 제출언어를 바꾸면 시간초과도 해결될 듯합니다 ㅎㅎ

dashadower   1년 전

아하..과제로 낸 문제인데 pypy3는 사용 불가능하다고 명시하셔서..

jun2korea   1년 전

Python3 시간 초과부분이 문제라면 find 함수를 수정해서 해결할 수 있습니다.

find함수를 지금 재귀로 구현하였는데, 해당 부분을 완전히 같은 역할을 하게 while문으로 구현할 수 있습니다

코드도 매우 간단해요

def find(x):

    while x != parent[x]:

        x = parnet[x]

    return x

Python으로 UF문제에서 find부분을 재귀로하면 시간초과가 나오는 경우가 많습니다. find부분만 이 코드처럼 수정하면 거의 해결 가능합니다.

댓글을 작성하려면 로그인해야 합니다.