-
https://www.acmicpc.net/problem/2636
2636번: 치즈
아래 <그림 1>과 같이 정사각형 칸들로 이루어진 사각형 모양의 판이 있고, 그 위에 얇은 치즈(회색으로 표시된 부분)가 놓여 있다. 판의 가장자리(<그림 1>에서 네모 칸에 X친 부분)에는 치즈가 놓
www.acmicpc.net
https://github.com/JUNGSOONIL/JAVA/blob/main/BAEKJOON%202636
GitHub - JUNGSOONIL/JAVA: JAVA 소스 코드
JAVA 소스 코드. Contribute to JUNGSOONIL/JAVA development by creating an account on GitHub.
github.com
해당 문제는 치즈의 위치가 주어지면 1초마다 경계면에 있는 치즈가 사라지는데
이때 모든 치즈가 사라지는 시간과, 마지막으로 사라지는 치즈의 수를 구하는 문제다.
조건으로는 치즈 안에 빈 공간이 있을 경우 해당 공간은 경계면으로 치지 않는다.
처음 문제를 보고 BFS를 이용해 경계면을 다 q에 넣어주고 줄이고 하면 되겠다고 생각했는데
조건이 있어서 생각을 해보다 보니 반대로 공기에서 시작해서 탐색하면서 만나는 치즈를
큐에다 넣어주고 이후 큐가 비지 않았으면 큐에 있는 내용을 가져와
해당 부분을 공기로 바꾸고 카운트한 뒤 다시 공기를 탐색하도록 하면 된다.
1. 공기부터 시작해서 탐색을 하고 공기를 만나면 공기 큐에, 치즈를 만나면 치즈 큐에 삽입
2. 공기를 다 탐색하면 치즈 큐가 비었는지 확인 비었으면 끝 안 비었으면 치즈 큐 탐색
3. 치즈 큐를 가져와서 해당 map을 공기로 바꿔주고 공기 쿠에 삽입 카운트를 증가
4. 시간을 증가시키고 위의 내용을 반복
728x90'알고리즘 > Baekjoon' 카테고리의 다른 글
Baekjoon 12865 평범한 배낭 JAVA (0) 2021.11.12 Baekjoon 1600 말이 되고픈 원숭이 JAVA (0) 2021.11.12 Baekjoon 17472 다리 만들기 2 JAVA (0) 2021.11.12 Baekjoon 14502 연구소 JAVA (0) 2021.11.12 Baekjoon 9205 맥주 마시면서 걸어가기 JAVA (0) 2021.11.12 댓글