[백준] 2178번 미로 탐색 / 파이썬 python 너비 우선 탐색(bfs) 구현

2025. 2. 10. 13:40·코딩테스트 준비/문제풀이

https://www.acmicpc.net/problem/2178

 

백준 2178번 미로 탐색

 

간단한 너비 우선 탐색(bfs)으로 구현이 가능한 문제였다.

 

너비 우선 탐색(breadth-first search) 알고리즘 특징은 그래프의 완전 탐색 방법 중 하나로,

가까운 노드를 먼저 방문한다.

 

스택, 재귀를 사용하는 깊이 우선 탐색(depth-first search)과 다르게 너비 우선 탐색은

선입선출(First In First Out) 방식이므로 큐를 사용해서 구현한다.

 

 

문제

 

 

 

 

설명

 

출발점 (0, 0)에서 상,하,좌,우를 봤을 때, 1이 있으면 현재 내가 있는 값 + 1 을 해준다.

 

 

도착점 (N-1, M-1)에 도달했을 때 그 값을 출력해 주면 끝.

 

코드가 짧고 어렵지 않으므로 바로 소스를 보며 이해하겠다.

 

 

코드

 

from collections import deque
import sys
input = sys.stdin.readline

n, m = map(int, input().split())
graph = [list(map(int, ' '.join(input().split()))) for _ in range(n)]

# 상하좌우 탐색용
dx = [0,1,0,-1]
dy = [-1,0,1,0]

def bfs(x, y):
    q = deque()
    q.append((x, y))
    while q:
        x, y = q.popleft()
        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]
            if nx < 0 or nx >= n or ny < 0 or ny >= m:		# 좌표 유효성 검사
                continue
            if graph[nx][ny] == 1:
                graph[nx][ny] = graph[x][y] + 1
                q.append((nx, ny))
    return graph[n-1][m-1]

print(bfs(0,0))

 

저작자표시 비영리 변경금지 (새창열림)

'코딩테스트 준비 > 문제풀이' 카테고리의 다른 글

[백준] 1850번 최대공약수 파이썬 Python / 유클리드 호제법 풀이  (0) 2025.02.14
[백준] 1012번 유기농 배추 | 파이썬 Python 너비 우선 탐색(BFS)으로 구현  (0) 2025.02.11
[백준] 1931번 회의실 배정 | 파이썬 Python 그리디 알고리즘 구현  (0) 2025.02.10
[백준] 1753번 최단경로 / 파이썬 python 다익스트라 알고리즘 구현  (0) 2025.02.10
[백준] 1717번 집합의 표현 / 파이썬 Python (union find)  (0) 2025.02.09
'코딩테스트 준비/문제풀이' 카테고리의 다른 글
  • [백준] 1012번 유기농 배추 | 파이썬 Python 너비 우선 탐색(BFS)으로 구현
  • [백준] 1931번 회의실 배정 | 파이썬 Python 그리디 알고리즘 구현
  • [백준] 1753번 최단경로 / 파이썬 python 다익스트라 알고리즘 구현
  • [백준] 1717번 집합의 표현 / 파이썬 Python (union find)
하이야니
하이야니
또 취준..!
  • 하이야니
    하이야니's 스케치
    하이야니
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 코딩테스트 준비
        • 알고리즘 개념
        • 문제풀이
      • 파이썬
      • 자바
      • 리눅스
      • C언어
      • 여행
        • 국내
        • 해외
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    pccp기출문제
    pccp기출문제1번
    백준유클리드호제법
    방콕tdac
    벨만포드
    벨만포드다익스트라
    프로그래머스pccp
    다익스트라
    tdac작성
    방콕입국신고서작성
    tdac작성방법
    프로그래머스pccp기출문제
    너비우선탐색파이썬
    유클리드호제법최대공약수
    벨만포드음수사이클
    프로그래머스파이썬
    프로그래머스코딩테스트
    유클리드호제법파이썬
    태국전자입국
    백준bfs
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
하이야니
[백준] 2178번 미로 탐색 / 파이썬 python 너비 우선 탐색(bfs) 구현
상단으로

티스토리툴바