BFS 3

[백준 14940번] 쉬운 최단거리 - java

문제 설명 1. 지도의 N과 M이 주어진다. 2. 가로세로(상하좌우)로 이동할 수 있고, 0은 못가는땅 1은 갈수있는땅 2는 목표지점이다. 3. 2에서 시작해서 도달 가능거리를 구한다. 4. 갈수있으면 도달까지 거리, 원래 갈수없으면 0, 원래 갈 수 있는데 못가면 -1을 출력한다. 풀이 과정 1. BFS로 풀어나간다. 2. 그냥 거리를 구하는것은 사실 간단하다. 기본적인 BFS를 사용해주면 된다. 3. 문제 설명의 4번과정에 관해서 조금 생각을 해주어야 한다. 그리고 내 풀이보다 분명히 더 효율적인 방법이 있겠지만, 이렇게 해도 시간복잡도에 크게 문제될 것은 없어서 진행해 주었다.(코테의 시간복잡도에서는 안걸릴 방법이기 때문) 4. 이를 생각하고 풀이과정을 도출해보자 A. 목표지점 2는 딱 한번 주어진..

알고리즘 공부 2022.04.19

[백준 23352번] 방탈출 - java

문제 설명 1. NxM크기의 격자판이 주어진다. 2. 상하좌우로 움직일 수 있으며, 각 방의 이동은 최단 경로로 움직인다. 3. 이렇게 최단 경로로 움직여서 가장 먼 거리를 움직이면, 그 시작점과 도착점이 비밀번호가 된다. 4. 가장 먼 거리가 여러개면 그 중 시작점과 도착점의 합이 큰 것이 비밀번호가 된다. 풀이 과정 1. 최단 경로 -> BFS 그냥 공식처럼 외워서 진행하자. 2. 우리는 어디서부터 시작하는게 최고로 가까울지 모른다. 그러므로 모든 점에 대해 그곳부터 시작하는 경우를 싹 다 구해야 할 것이다. 이 말은 완전탐색 + BFS로 진행해야 한다는 것이다. 3. BFS를 통해 나아가면서, 해당 위치가 마지막인지 어떤지 모르므로 매번 거리를 재서 진행하는것이 속편할 것이다. 이는 BFS여서 쉽게..

알고리즘 공부 2022.04.05

[백준 4179번] 불! - java

문제 설명 1. 미로의 크기 R, C가 주어진다. 2. 불이 나고, 지훈이가 미로안에 있다(지훈이는 한명) 3. 불과 지훈이가 상하좌우로 움직일수 있고 지훈이는 불과 벽을 뛰어넘지 못한다. 4. 지훈이가 미로를 탈출(가장자리 도착)하는 가장 짧은 방법을 구하라. 풀이 과정 1. BFS에 약간의 구현을 더해서 진행하는 문제이다. 2. 먼저 둘이 동시에 이동한다 가정해보면 코드상에서는 지훈이의 이동보다 불의 이동이 먼저 일어나야 하는데, - 코드에서 지훈이가 불보다 먼저 움직이면 이후에 타죽는다. - 불이붙은 지역에 지훈이는 갈 수 없다. 그러므로 지훈이를 불보다 늦게 움직이도록 생각한다. 3. 지훈이는 미로의 가장자리에 있으면 탈출 가능하다. 즉 처음부터 가장자리에 있으면 그냥 탈출하면 된다. 4. 지훈이..

알고리즘 공부 2022.03.20