백준 2178번 - 미로 탐색
백준 2178번 바로가기 나의 풀이 # 입력 import sys read = sys.stdin.readline n,m = map(int, read().split()) maze = [] for _ in range(n): maze.append(list(map(int,read().strip()))) dx = [1,-1,0,0] dy = [0,0,1,-1] # 처리 - bfs 활용 def bfs(x, y): from collections import deque queue = deque() queue.append((x,y)) while queue: x,y = queue.popleft() for i in range(4): new_x = x+dx[i] new_y = y+dy[i] if 0<=new_x<n and 0<=new_y<m and maze[new_x][new_y] == 1: queue.append((new_x,new_y)) maze[new_x][new_y] = maze[x][y] + 1 bfs(0,0) print(maze[n-1][m-1]) CODE REVIEW 처음에는 DFS을 이용해서 문제를 풀어내려하다가 최적값을 찾는데 애를 먹었다. 미로찾기 문제에서 최단경로를 찾기 위해서는 BFS가 편리하다. 어느정도 난이도 있는 문제를 풀 때에 무작정 풀어나가지 말고, 어떤 전략이 나을지 고민해보는 자세를 가지자!