-
https://www.acmicpc.net/problem/4396
4396번: 지뢰 찾기
지뢰찾기는 n × n 격자 위에서 이루어진다. m개의 지뢰가 각각 서로 다른 격자 위에 숨겨져 있다. 플레이어는 격자판의 어느 지점을 건드리기를 계속한다. 지뢰가 있는 지점을 건드리면 플레이어
www.acmicpc.net
https://github.com/JUNGSOONIL/JAVA/blob/main/BAEKJOON%204396
GitHub - JUNGSOONIL/JAVA: JAVA 소스 코드
JAVA 소스 코드. Contribute to JUNGSOONIL/JAVA development by creating an account on GitHub.
github.com
해당 문제는 지뢰 찾기 게임 문제인데 지뢰에 대한 정보가 먼저 주어지고
이후 사용자가 누른 칸에 대한 정보가 주어지면 거기에 해당하는 지뢰 찾기 결과를 출력하는 문제다.
조건은 만약 지뢰가 있는 곳을 클릭했을 경우 모든 지뢰의 위치도 같이 출력해주어야 한다.
해당 문제는 bfs를 이용해서 해결했고 먼저 정보가 이어져서 들어왔기 때문에
배열을 char로 선언해서 사용했다. map 배열에는 지뢰 위치를 담고 cnt 배열은 최종 출력하는 배열로 사용하였고,
먼저 입력 처리를 하고 cnt배열은 입력받으면서 누른 위치를 큐에다 넣어두고 이후 bfs를 돌려준다.
bfs에서는 map배열을 8방 탐색하면서 지뢰가 있을 때마다 sum을 1씩 증가시키고
8방 탐색이 끝났을 경우 sum값을 cnt배열에 넣어주었는데 이때 int값을 char로 형 변환을 해주어야 한다.
추가로 bfs를 돌리면서 큐에서 하나씩 빼올 때 만약 현재 위치에 지뢰가 있으면 flag 변수를 true로 바꿔주고
이후 최종 출력하는 부분에서 flag변수의 값을 통해 그냥 cnt배열을 출력할지 아니면
cnt배열을 출력하면서 지뢰 위치를 같이 출력하는 메서드를 선택할지 정해서
최종 출력을 해주어 문제를 해결했다.
728x90'알고리즘 > Baekjoon' 카테고리의 다른 글
Baekjoon 17391 무한부스터 JAVA (0) 2022.01.10 Baekjoon 15664 구슬 탈출 3 JAVA (0) 2022.01.09 Baekjoon 5427 불 JAVA (0) 2022.01.06 Baekjoon 14940 쉬운 최단거리 JAVA (0) 2022.01.05 Baekjoon 1956 운동 JAVa (0) 2022.01.04 댓글