[BOJ] 9938번: LADICE

https://www.acmicpc.net/problem/9938


Union-Find를 이용해 풀이가 가능합니다. parent[i]에, i가 차있을 경우 대신 쓸 수 있는 다른 drawer의 번호를 담아둡니다. 그러면 입력받은 A, B에 대해 A와 B가 모두 비어있지 않을 경우 find(A)와 find(B)를 확인하면 됩니다.(이 때 경로압축 또한 해주어야 합니다.)


이 문제에서 독특하게 배워간 것이 있는데, cin과 cout을 번갈아 쓰게 되면 buffer를 계속 비우기때문에 시간 초과가 발생합니다. 이를 막기 위해 cin과 cout의 동기화를 추가로 끊어야합니다. 즉 ios::sync_with_stdio(false); 에 cin.tie(0); 까지 두어야 입출력 시간으로 인한 시간 초과를 막을 수 있습니다.


https://github.com/blisstoner/BOJ/blob/master/9938.cpp

'알고리즘 > BOJ' 카테고리의 다른 글

[BOJ] 10775번: Gates  (0) 2018.05.09
[BOJ] 1202번: LOPOV  (0) 2018.05.09
[BOJ] 1781번: 컵라면  (0) 2018.05.08
[BOJ] 3033번: DVAPUT  (0) 2018.05.08
[BOJ] 1715번: 카드 정렬하기  (0) 2018.05.03
[BOJ] 7662번: Dual Priority Queue  (0) 2018.05.03
  Comments