공부하고 기록하는, 경제학과 출신 개발자의 노트

프로그래밍/코딩테스트 문제풀이

[Python] 백준 3197. 백조의 호수

inspirit941 2020. 7. 21. 20:40
반응형

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

 

3197번: 백조의 호수

문제 두 마리의 백조가 호수에서 살고 있었다. 그렇지만 두 마리는 호수를 덮고 있는 빙판으로 만나지 못한다. 호수는 가로로 R, 세로로 C만큼의 직사각형 모양이다. 어떤 칸은 얼음으로 덮여있�

www.acmicpc.net

Python3으로는 통과한 사람이 없는 문제. PyPy를 써야 통과 가능하다.

 

매 초마다 빙하가 녹는 지점을 찾고, 백조끼리 연결이 가능한지 확인하다 보면

R, C <= 1500이라는 조건 때문에 시간초과가 나는 문제.

 

도저히 모르겠어서 풀이 로직을 검색해서 찾아보니

BFS + 이분탐색으로 '최소 시간'을 찾아내는 방식으로 풀어야 했다.

 

1. 바다 / 백조를 기준으로, 빙하의 각 위치는 '몇 초 후면' 녹아 없어지는지를 배열에 저장한다. (time 배열)

2. '시간'을 기준으로 이분탐색을 진행한다. n초가 지난 후 백조끼리 연결이 가능한지를 time 배열로 확인한다.

3. 이분탐색으로 최솟값을 구해 리턴한다.

 

 

반응형