BFS
-
[Python] 백준 2206 벽 부수고 이동하기알고리즘/문제풀이 2021. 7. 17. 21:12
1. 문제 링크 https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 2. 문제 요약 최단 경로 구하기 문제 → bfs 탐색 벽을 1개까지만 부수고 이동 가능 → 최단경로에서 이 조건으로 어려워짐. 3. 아이디어 정리 아이디어 1. 벽을 모두 부수면서 모든 경우의 수를 확인 ⇒ 시간 초과 아이디어 2. 벽을 부순 상태와 부수지 않은 상태의 visit 값을 분리하기 벽을 부순 상태와 부수지 않은 상태 분리 visit_0 = [..
-
[Python] 스타트 링크 5014 - bfs 그래프 탐색알고리즘/문제풀이 2021. 7. 3. 19:35
1. 문제 https://www.acmicpc.net/problem/5014 5014번: 스타트링크 첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다. www.acmicpc.net 2. 문제 요약 S > G로 가기 위해 눌러야 하는 버튼의 수의 최솟값을 찾는 문제 → 탐색 문제 3. 아이디어 정리 BFS로 그래프 탐색을 진행하여 최솟값을 찾아본다. S를 큐에 넣어 탐색을 시작한다. 위로 올라가는 경우: 방문을 안 했다면 큐에 넣고, 버튼 누른 수 저장 아래로 내려가는 경우: 방문을 안 했다면 큐에 넣고, 버튼 누른 수 저장 4. 문제 풀이 4-1. 내 풀이 import sys..