반응형
2606
-
BOJ) 바이러스 (2606, JAVA)알고리즘/백준 2020. 8. 24. 16:39
풀이 전형적인 find - union 문제라고 할 수 있겠다. n 대의 컴퓨터가 연결되어 있고, 연결 관계가 주어진다. (그래프) 연결된 컴퓨터들 중 하나만 바이러스 걸려도 연결된 컴퓨터 모두 바이러스가 걸린다. 1번 컴퓨터가 바이러스 걸렸을 때, 몇 대의 컴퓨터가 추가적으로 바이러스 걸리는지 구하는 문제다. 풀이는 간단했다. 우선 parents 배열, find, union 메소드를 만들어 줬다. 그리고 입력을 받으면서 따로 graph에 저장하지 않고, 바로 find -union을 해줬다. 이후, 2번 ~ n번까지 컴퓨터를 돌면서 parent를 찾아 1번의 parent와 같다면 답에 더해줬다. (union할 때, 더 큰수의 parent를 작은 수로 설정해서 아마 1번의 parents는 언제나 1일것이다...