-
https://www.acmicpc.net/problem/14923
14923번: 미로 탈출
홍익이는 사악한 마법사의 꾐에 속아 N x M 미로 (Hx, Hy) 위치에 떨어졌다. 다행히도 홍익이는 마법사가 만든 미로의 탈출 위치(Ex, Ey)를 알고 있다. 하지만 미로에는 곳곳에 마법사가 설치한 벽이
www.acmicpc.net
https://github.com/JUNGSOONIL/JAVA/blob/main/BAEKJOON%2014923
GitHub - JUNGSOONIL/JAVA: JAVA 소스 코드
JAVA 소스 코드. Contribute to JUNGSOONIL/JAVA development by creating an account on GitHub.
github.com
해당 문제는 map정보가 주어지고 출발 도착 좌표가 주어졌을 때 출발점에서 도착점까지
가는데 걸리는 칸수를 구하는 문제다.
단 벽은 지날수 없지만 1회만 부를 수 있다.
예전에 풀었던 벽 부수고 이동하기 문제와 동일한 문제다.
https://soonil.tistory.com/261
Baekjoon 2206 벽 부수고 이동하기 JAVA
https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에
soonil.tistory.com
해당 문제는 bfs를 이용해서 해결했으며, 벽 부슨 정보와 이동 칸수는 class를 하나 선언해
데이터를 같이 관리하는 방식으로 처리했고,
방문처리부분에서는 3차원 배열을 이용해서 벽을 부슨경우와 아닌 경우로 나눠서
체크하는 방식으로 처리했다.
입력처리를 하고 시작 도착 좌표를 입력받을 땐 문제는 1,1에서 시작하지만 0,0에서 시작하는 것으로
하기 위해 -1을 해주었고, 이후 map을 입력받아준 뒤 bfs를 돌린다.
bfs에서는 최초 시작점을 큐에 넣고 시작하며, 만약 큐에서 빼낸값이 도착 값이랑 같으면 큐에 저장된 cnt를
출력해주고 bfs를 끝내며, 그렇지 않으면 범위를 벗어났는지 아니면 이미 방문했는지 등을
체크해서 로직에 맞도록 구현하였다. 만약 bfs를 빠져나오지 않고 끝까지 가게 되면
도착을 하지 못한다는 소리기 때문에 -1을 출력하고 끝낸다.
728x90'알고리즘 > Baekjoon' 카테고리의 다른 글
Baekjoon 14425 문자열 집합 JAVA (0) 2021.12.09 Baekjoon 16948 데스 나이트 JAVA (0) 2021.12.08 Baekjoon 14719 빗물 JAVA (0) 2021.12.04 Baekjoon 2638 치즈 JAVA (0) 2021.12.04 Baekjoon 2609 최대공약수와 최소공배수 JAVA (0) 2021.12.04 댓글