// -------------------------------
// [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. 반복

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: