변수 대입시 주의사항

김태성·2024년 2월 15일
0

백준 4386 별자리 만들기
https://www.acmicpc.net/problem/4386

최소 스패닝 트리에서 union-find 변수 대입 코드이다.

while(retry):
    retry = False
    a = distance.pop()
   
    if(visited[a[0]] == visited[a[1]]):
        continue
    if(visited[a[0]] != visited[a[1]]):
        for i in range(1,n+1):
            if visited[i] == visited[a[1]]:
                visited[i] = visited[a[0]]

별 생각 없이 적었는데, 이렇게 코드를 적게 되면
visited[a[0]]의 값이 변하게 되면
if문의 판별에도 영향이 가게 되고, 대입되는 값도 이상하게 된다.

while(distance):
    a = distance.pop()
    if visited[a[0]] != visited[a[1]]:
        old_group = visited[a[1]]  
        new_group = visited[a[0]]  
        ans += a[2]

        for i in range(1, n+1):
            if visited[i] == old_group:
                visited[i] = new_group

그러니까 이렇게 대입하려는 변수는 따로 지정을 한 다음에 대입을 해야
코드가 안정해진다.

profile
닭이 되고싶은 병아리

0개의 댓글