// ------------------------------- // [1] 입력 및 초기 설정 // ------------------------------- // N, M 입력 받기 // board 배열 입력 받기 // totalCheese = 0 // 모든 칸을 확인하면서: // 만약 값이 1이면 (치즈라면) // totalCheese += 1 // time = 0 // lastCheeseCount = 0 // ------------------------------- // [2] 외부 공기 찾기 (DFS) // ------------------------------- // 함수 findOutsideAir(x, y): // 현재 위치를 방문 처리 // 4방향 반복: // 다음 좌표 (nx, ny) 계산 // 만약 범위를 벗어나면: // 건너뛴다 // 만약 이미 방문했으면: // 건너뛴다 // 만약 치즈(1)라면: // 건너뛴다 // 위 조건을 모두 통과하면: // findOutsideAir(nx, ny) 호출 // ------------------------------- // [3] 전체 반복 (치즈가 없어질 때까지) // ------------------------------- // while (totalCheese > 0): // visited 배열을 모두 false로 초기화 // lastCheeseCount = 현재 치즈 개수 저장 // findOutsideAir(0, 0) 실행 // ------------------------------- // [4] 녹을 치즈 찾기 // ------------------------------- // meltList = 빈 리스트 // 모든 칸 (i, j) 반복: // 만약 현재 칸이 치즈라면: // canMelt = false // 4방향 반복: // 주변 칸 (ni, nj) 확인 // 만약 그 칸이 외부 공기라면 (visited == true): // canMelt = true // 반복 종료 // 만약 canMelt == true 라면: // meltList에 (i, j) 추가 // ------------------------------- // [5] 치즈 녹이기 // ------------------------------- // meltList에 있는 모든 좌표 반복: // 해당 위치를 0으로 바꾸기 // totalCheese -= 1 // ------------------------------- // [6] 시간 증가 // ------------------------------- // time += 1 // ------------------------------- // [7] 결과 출력 // ------------------------------- // time 출력 // lastCheeseCount 출력 // ------------------------------- // [핵심 요약] // ------------------------------- // 1. DFS로 외부 공기 표시 // 2. 공기 닿은 치즈 찾기 // 3. 한 번에 녹이기 // 4. 반복
To embed this project on your website, copy the following code and paste it into your website's HTML: