R, C 값이 크기 때문에 직접 하루하루씩 날짜를 올리면서 BFS를 돌리면 O(N^3)으로 시간초과가 납니다.
(R,C를 N으로 퉁치겠습니다.)
1. 맨 처음에 BFS 탐색을 통해 가장 마지막에 녹는 빙판의 날짜 MAXV 를 구합니다.
2. 1번 값에 의해서 백조가 만나게 되는 날의 후보는 0~MAXV 사이에 존재합니다.
3. 0~MAXV 날짜 사이의 후보값을 이분탐색으로 BFS를 돕니다.
4. 그러면 시간복잡도는 O(N^2LogN)이 되서 제한시간 내에 통과할 수 있습니다.
코드: github.com/cotchan/algorithm/blob/main/cpp/BOJ/BOJ3197.cc
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ]10655번: 마라톤 1 (0) | 2021.03.30 |
---|---|
[BOJ]1167번: 트리의 지름 (0) | 2021.03.10 |
[BOJ]3584번: 가장 가까운 공통 조상 (0) | 2021.03.08 |
[BOJ]1516번: 게임 개발 (0) | 2021.03.05 |
[BOJ]1766번: 문제집 (0) | 2021.03.04 |