모든 친구와의 관계가 사향트리꼴로 연결된 경우
1 2
2 3
3 4
...
n-1 n
n n+1
총 n+1 명의 친구가 있겠죠?
그리고 이경우엔 최악의 경우 질문자님이 작성하신 코드로는 O(N^2)의 시간이 소요됩니다.
왜냐하면
1에 2를 붙이고, 그 2을 3에 붙이고, 그 3을 4에 붙이고, 그 4를 5에 붙이고... 하면 union을 실행시킬때 마다 탐색수가 1씩 늘어나면서, 2+3+4+5+6+7+...+n+1
가 되서 O(N^2)이 됩니다.
그리고 주어진 n은 100,000 이므로 시간초과가 날 수 밖에 없습니다.
randomize algorithm으로 푸시거나, 다른 휴리스틱을 사용하여 최적화 시키는 방법이 있겠지요
choyungsoo 6년 전
union find 알고리즘을 사용했는데 시간초과가 뜨네요ㅠㅠ
뭐가 문제일까요.. 고수님들 부탁드립니다!