알고리즘 공부

[백준 2636번] 치즈 - java

철매존 2022. 1. 29. 23:31
728x90

문제 설명

1. NxN크기의 땅이 있다.

2. 인구 이동은 인접 국가와의 인구 차이가 최소보다 많아야 하고, 최대보다 적어야 한다.

3. 인구 이동은 인접 국가들의 인구의 평균으로 된다.

풀이 과정

 1. BFS를 사용하여 해결 가능하다.

 2. 총 3가지 process를 구현해주면 된다.

    (1) 맨 위 테두리(0, 0) <- 무조건 공기 로부터 BFS를 실시하여 치즈인 부분(테두리)를 2로 바꾸어 주기.

    (2) 2로 바뀐 테두리를 0으로 바꾸어 주기(공기가 된다.) -> 바꾸면서 그 변경할 수를 세준다.

    (3) 전체 판을 탐색하며 더이상 녹을 치즈가 있을지 확인해주기.

 3. 이걸 처음부터 실시하면 

테두리의 치즈를 체크한다 -> 체크된 치즈가 녹는다(녹은 치즈수 세기) -> 확인후  더 치즈가 있으면 다시 처음부터

                                                                                           -> 더 녹을 치즈가 없으면 녹은 치즈 수를 return하기

위의 process를 할 때마다 날짜를 더해주면 최대날짜 구하기 가능.

코드