백준 : 미로 탐색 - 2178

2025. 10. 2. 23:31·알고리즘
반응형

입력

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

출력

첫째 줄에 지나야 하는 최소의 칸 수를 출력한다. 항상 도착위치로 이동할 수 있는 경우만 입력으로 주어진다.

예제 입력 1 

4 6
101111
101010
101011
111011

예제 출력 1 

15

예제 입력 2 

4 6
110110
110110
111111
111101

예제 출력 2 

9

예제 입력 3 

2 25
1011101110111011101110111
1110111011101110111011101

예제 출력 3 

38

ㅁ

예제 입력 4 

7 7
1011111
1110001
1000001
1000001
1000001
1000001
1111111

예제 출력 4 

13

 

이 문제는 사실 백준 문제 중에 1012번, [이코테] : DFS/BFS (미로 탈출) 를 보면 유사한 문제와 같다.

 

import sys
from collections import deque

# sys.stdin.readline을 짧은 변수명으로 설정
input = sys.stdin.readline

n,m = map(int,input().split())

graph = []
for _ in range(n):
    graph.append(list(map(int,input().rstrip()))) # rstrip 안하면 개행 문자 포함이여서 꼭 하기

x,y = 1,1

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

def BFS(x,y):
    queue = deque([(x,y)])
    while queue:
        x,y = queue.popleft()

        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]
            if nx < 0 or ny <0 or nx >= n or ny >= m:
                continue
            if graph[nx][ny] == 0:
                continue
            if graph[nx][ny] == 1:
                graph[nx][ny] = graph[x][y] + 1
                queue.append((nx,ny))
        
    return graph[n-1][m-1] # 마지막 그래프까지 어떻게 도달했는지 거리 반환을 의미함.

# 실제 위치는 1,1이지만 그래프 인덱스 기준으로는 0,0!
print(BFS(0,0))

다음과 같이 큐에 넣고 각 행을 위치로 기억하여 좌표값대로 움직일 때 마다 그래프의 값을 1씩 증가하여 업데이트 해주는 로직으로 구현하면 따로 count 없이 구현이 가능할 수 있다.

반응형

'알고리즘' 카테고리의 다른 글

백준 : 요세푸스 문제 0 - 11866  (0) 2025.10.03
백준 : 회전하는 큐 - 1021  (0) 2025.10.03
백준 : 특정 거리의 도시 찾기 - 18352  (0) 2025.10.01
백준 : 트리 - 1068  (0) 2025.09.29
백준 : 다리 놓기 - 1010  (0) 2025.09.29
'알고리즘' 카테고리의 다른 글
  • 백준 : 요세푸스 문제 0 - 11866
  • 백준 : 회전하는 큐 - 1021
  • 백준 : 특정 거리의 도시 찾기 - 18352
  • 백준 : 트리 - 1068
Feel나는 대로 GI록하는 글
Feel나는 대로 GI록하는 글
세상을 위한 개발자가 되기 위하여
    반응형
  • Feel나는 대로 GI록하는 글
    FeelGI
    Feel나는 대로 GI록하는 글
  • 전체
    오늘
    어제
    • 분류 전체보기 (58)
      • ML & AI (3)
        • 논문 리뷰 (1)
        • Computer Vision (0)
        • Digital Image Processing (1)
      • 알고리즘 (46)
      • 프로그램(대회,공모전,프로그램) (2)
      • 도서 (0)
      • 필기록 (1)
        • 회고록 (0)
        • 끄적끄적 (1)
      • 취업 준비 (0)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    #코드트리 #코딩테스트 #코테공부 #코테준비 #알고리즘공부 #갭체크
    동적계획
    스택 수열
    LG Aimers
    코딩테스트
    백준
    DP #알고리즘 #백준 #Python
    코테
    ICT 학점연계 프로젝트 인턴십
    알고리즘
    14761
    백준 토마토 7576
    FizzBuzz
    IT대학생
    파이토치
    LG AI
    파이썬
    28702
    구현 #문자열 #백준 #python
    백준 토마토
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
Feel나는 대로 GI록하는 글
백준 : 미로 탐색 - 2178
상단으로

티스토리툴바