문제 출처
1. 문제설명
N*N
크기의 영역이 주어진다.
- 각 칸에는 높이가 적혀있다.
- 비가 내리면 일정 높이의 지점이 물에 잠기게 된다.
- 이때 잠기지 않은 영역의 개수를 구하는 문제이다.
- 비가 많이 와서 모든 지역이 잠길 수도 있고, 적게 와서 일부 지역만 잠길 수도 있는데,
- 안전 영역이 가장 많이 생기는 높이를 구하라.
2. 알고리즘 설계
- 맵에 높이를 입력받게 된다.
- 0부터 맵의 최대값까지 물에 잠기는 상황을 고려해 탐색한다.
for(int limit=0; limit<=upper; limit++)
limit
보다 작은 지점을 BFS 탐색한다.
- 탐색이 끝나면, 영역 하나가 계산된 것이므로 카운팅한다.
- 위와 같은 방식을 최대값까지 계산해, 카운팅이 가장 큰 값을 출력하면 된다!
3. 전체 코드