* 치즈가 없는 좌표(0)에서 탐색할 수 있는 곳에 (상하좌우) 치즈가 있는 좌표(1)가 있다면 -> 이번 타임에 녹는 치즈이다.
* 큐를 돌고 있는 상황에서 치즈를 바로 없애버리면 (1-> 0) 한 타임에 모든 치즈가 녹아버린다.
* 위 상황을 방지하기 위해 이번 타임에 녹은 치즈는 map에 -1로 표시한다.
* 치즈의 개수를 셀 때 -1인 좌표를 0으로 바꾼다. (벡터에 넣어주고 그 좌표들만 0으로 바꿔줘도 되지만, 어차피 치즈 개수 셀 때 모든 맵의 좌표를 탐색하기 때문에 이 때 바꿔주는 것으로 했다.)
* 치즈가 모두 녹아 없을 때까지 (check() == True) 반복한다.
* 치즈가 모두 녹기 한 시간 전에 있는 치즈의 개수를 세야 하기 때문에 howmanyCheese()를 만들었다. 더 효율적인 방법도 있겠지만, 100*100 이기 때문에 모든 맵을 탐색해도 됐다.
'BOJ > C++' 카테고리의 다른 글
[BOJ] 9470. Strahler 순서 + TC (0) | 2020.04.01 |
---|---|
[BOJ] 1280. 나무심기 (0) | 2020.03.30 |
[BOJ] 18808. 스티커 붙이기 (0) | 2020.03.25 |
[BOJ] 18809. Gaaaaaaaaaarden (0) | 2020.03.25 |
[BOJ] 10799. 쇠막대기 (C) (0) | 2020.03.24 |