백준 : 미로탐색(2178) with 파이썬

2023. 11. 15. 16:06· 백준 : BFS

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

 

2178번: 미로 탐색

첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.

www.acmicpc.net

 

# DFS 버젼

N, M = map(int, input().split())
graph = [list(map(int, input())) for _ in range(N)]
visited = [[0] * M for _ in range(N)]
visited[0][0] = 1
dx = [1, -1, 0, 0]
dy = [0, 0, 1, -1]
count = 0

def DFS(x, y):
    for i in range(4):
        nx = x + dx[i]
        ny = y + dy[i]
        if 0 <= nx < N and 0 <= ny < M and graph[nx][ny] == 1:
            if visited[nx][ny] == 0 or visited[nx][ny] > visited[x][y] + 1:
                visited[nx][ny] = visited[x][y] + 1
                if nx == N - 1 and ny == M - 1:
                    return
                DFS(nx, ny)
    return
DFS(0, 0)
print(visited[N - 1][M - 1])


#---------------------------------------
# BFS 버젼

from collections import deque

N, M = map(int, input().split())
graph = [list(map(int, input())) for _ in range(N)]
visited = [[0] * M for _ in range(N)]
visited[0][0] = 1

dx = [1, -1, 0, 0]
dy = [0, 0, 1, -1]
count = 0

def BFS(x, y):
    q = deque([(x, y)])
    visited[x][y] = 1
    while q:
        x, y = q.popleft()
        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]
            if 0 <= nx < N and 0 <= ny < M and graph[nx][ny] == 1:
                if visited[nx][ny] == 0 or visited[nx][ny] > visited[x][y] + 1:
                    visited[nx][ny] = visited[x][y] + 1
                    q.append((nx, ny))
    return
BFS(0, 0)
print(visited[N - 1][M - 1])

 

저작자표시 (새창열림)

'백준 : BFS' 카테고리의 다른 글

백준 : 연구소(14502) with 파이썬  (0) 2023.11.26
백준 : DFS와 BFS(1260) with 파이썬  (2) 2023.08.23
백준 : 연결 요소의 개수(11724) with 파이썬  (0) 2023.08.22
백준 : 토마토(7576) with 파이썬  (2) 2023.08.18
'백준 : BFS' 카테고리의 다른 글
  • 백준 : 연구소(14502) with 파이썬
  • 백준 : DFS와 BFS(1260) with 파이썬
  • 백준 : 연결 요소의 개수(11724) with 파이썬
  • 백준 : 토마토(7576) with 파이썬
유민기
유민기
유민기
Youminki
유민기
전체
오늘
어제
  • 분류 전체보기 (45)
    • 백준 : BFS (5)
    • 알고리즘(이충기 교수) (4)
    • 웹해킹 (6)
    • 백준 : 동적 프로그래밍 (11)
    • 백준 : 분할정복 (5)
    • 백준 : backtraking (2)
    • 컴퓨터 보안(한승철 교수) (4)
    • FrontEnd (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
유민기
백준 : 미로탐색(2178) with 파이썬
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.