1647번 - 도시 분할 계획
크루스칼 알고리즘으로 문제를 풀었는데요!
find함수에서
- 시간 초과 나는 경우
else{
return find(x);
}
이렇게 하면 시간초과 나고
- 시간 초과 나지 않는 경우
return top[x] = find(x);
이렇게 하면 시간초과 나지않고 해결됩니다.
둘이 무슨 차이인가요??
두 번째 경우는 반환해야 하는 값을 계산한 다음 그 값을 따라 올라갔던 모든 자리에 기록하므로 다음번에 다시 계산을 할 때 시간이 덜 걸립니다. 이름도 있습니다. 경로 압축 최적화라고.
첫 번째 거는 다음과 같은 입력이 들어오면 O(n^2)라서 시간초과가 날 겁니다 아마.
2 1 1
3 2 1
4 3 1
5 4 1
...
댓글을 작성하려면 로그인해야 합니다.
bgg0223 4년 전
크루스칼 알고리즘으로 문제를 풀었는데요!
find함수에서
- 시간 초과 나는 경우
else{
return find(x);
}
이렇게 하면 시간초과 나고
- 시간 초과 나지 않는 경우
else{
return top[x] = find(x);
}
이렇게 하면 시간초과 나지않고 해결됩니다.
둘이 무슨 차이인가요??