풀이
뚫린 부분을 제외한 공기와 접촉되는 치즈는 녹을 때 전체가 녹으려면 얼마나 걸리고 녹기 직전의 치즈면적을 구하는 문제이다.
2차원 배열의 테두리가 빈칸으로 주어진다는 점을 활용해서 0, 0 을 시작으로 BFS 를 실행했을 때 1 이 있는 지점을 0 으로 바꾸고 방문처리 해주는 과정을 반복하면 공기와 접촉한 칸을 녹인 상태의 2차원 배열을 만들어 낼 수 있다.
BFS 가 모두 실행되고 나면 board 의 값을 더하여 남아있는 치즈면적을 리턴한다.
만약 치즈면적이 0이 아니라면 ans 에 저장해준 후 BFS 를 다시 실행한다.
치즈면적이 0이 되었다면 ans 에 저장해둔 1시간 전의 치즈면적과 반복된 BFS 의 횟수를 출력해주면된다.
소스코드
References