빠똥빠똥
2636번 치즈(BFS, 조건) - ☆ 본문
#문제링크 : https://www.acmicpc.net/problem/2636
전략 : 가장자리에는 치즈가 올 수 없으므로, (1, 1)에서부터 BFS로 공기인 부분을 따로 구별해준다. 나는 공기인 부분을 bfs_air함수로 check에 1로 표시해두었다. 그리고 bfs_melt함수로 녹이는 부분을 check 1로 표시해두고, 녹이는 부분은 치즈이기 때문에 map값이 1이어야 하고, dist배열에 그전 dist + 1을 해준다. 만약, 경계에서 방문하지 않았고(check가 0이고) map이 0이라면(구멍이라면) 큐에 푸쉬하고 구멍을 BFS로 탐색해나간다. 여기서 dist는 이전 dist와 같은 값으로 유지한다. 이렇게 한타임의 치즈 melt down이 진행된다. 전체 배열을 방문할때까지 해야하므로, flag변수를 이용해서 main함수에서 반복을 돌려준다.
※주의사항
1. 논리에 문제가 없는데 무한루프를 돈다면, 오타가 있을 확률이 높다.
2. 마지막에 마지막 조각 갯수를 셀 때, dist가 가장 큰 부분 중에, 치즈가 존재했던 부분만 마지막 조각갯수가 되므로, 조건에 유의하자.
'백준' 카테고리의 다른 글
2583번 영역 구하기(BFS) (0) | 2020.06.17 |
---|---|
11654번 아스키 코드 (0) | 2020.06.16 |
7569번 토마토(BFS) (0) | 2020.06.16 |
14442번 벽 부수고 이동하기2(BFS, 조건) - ☆ (0) | 2020.06.16 |
2206번 벽 부수고 이동하기(BFS, 조건) - ☆ (0) | 2020.06.15 |