[백준] 1074번 : 미로 탐색 (🥈실버 1) (Python)

2024. 1. 14. 21:54·◼ PS Note/백준
반응형

문제 바로 가기

 

1074번: Z

한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을

www.acmicpc.net

 


풀이

  • 사용 언어 : Python
  • 풀이한 날짜 : 2024-01-11
 
from collections import deque

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

grid = [
    list(map(int, input()))
    for _ in range(n)
]

dist_grid = [
    [0] * m
    for _ in range(n)
]
dist_grid[0][0] = 1

q = deque()

drs = [0, 1, 0, -1]
dcs = [1, 0, -1, 0]


def in_range(r, c):
    return r >= 0 and r < n and c >= 0 and c < m


def bfs():
    while q:
        r, c, num = q.popleft()

        for dr, dc in zip(drs, dcs):
            nr, nc = r + dr, c + dc
            if in_range(nr, nc) and grid[nr][nc] and not dist_grid[nr][nc]:
                dist_grid[nr][nc] = num
                q.append((nr, nc, num + 1))


q.append((0, 0, 2))
bfs()

print(dist_grid[n - 1][m - 1])

 

풀이 로직

  • 가중치가 1인 2차원 배열에서는 BFS 탐색으로 최단 이동 경로(및 거리)를 구할 수 있다.
  • (1, 1)에서부터 상하좌우를 살펴보며 너비 우선 탐색을 진행한다. 이 때 이동 가능한 곳으로만 이동해야 하며, 한 번 다음으로 이동할 때마다 거리값을 1씩 증가시켜 나간다.

 

문제 접근 과정 및 느낀점

이 문제 또한 최근에 열심히 연습했던 유형이라 빠르게 문제를 해결할 수 있었다. 다만 초기 조건을 설정할 때 조금 어러움이 있었는데, 이 부분은 계속해서 반복 연습하다 보면 충분히 보완할 수 있으리라 생각한다.

 

반응형

'◼ PS Note > 백준' 카테고리의 다른 글

[백준] 1764번: 듣보잡 (🥈실버 4) (Python)  (0) 2024.01.14
[백준] 1541번 : 잃어버린 괄호 (🥈실버 2) (Python)  (0) 2024.01.14
[백준] 1074번 : Z (🥈실버 1) (Python)  (0) 2024.01.12
[백준] 1012번 : 유기농 배추 (🥈실버 2) (Python)  (0) 2024.01.12
[백준] 1107번 : 리모컨 (🥇골드 5) (Python)  (2) 2024.01.10
'◼ PS Note/백준' 카테고리의 다른 글
  • [백준] 1764번: 듣보잡 (🥈실버 4) (Python)
  • [백준] 1541번 : 잃어버린 괄호 (🥈실버 2) (Python)
  • [백준] 1074번 : Z (🥈실버 1) (Python)
  • [백준] 1012번 : 유기농 배추 (🥈실버 2) (Python)
SangYoonLee (SYL)
SangYoonLee (SYL)
Slow, But Steady Wins The Race 😎
    반응형
  • SangYoonLee (SYL)
    ◆ Slow, But Steady ◆
    SangYoonLee (SYL)
  • 전체
    오늘
    어제
    • ◻ 전체 글 수 : (132)
      • ✪ 취미, 경험 회고 및 일상 (26)
        • [취미] Room Escape (2)
        • [회고] IT 관련 경험 회고 (18)
        • [일상] 일상 생각 (4)
        • [일상] 독후감 (1)
      • ◼ FrontEnd (30)
        • Web & HTML, CSS (9)
        • JavaScript (4)
        • TypeScript (1)
        • ReactJS (16)
      • ◼ CS (3)
        • 자료구조 & 알고리즘 (1)
        • 컴퓨터 구조 (1)
        • 운영체제 (1)
      • ◼ PS Note (40)
        • 백준 (38)
        • 프로그래머스 (2)
      • ◼ IT Etc. (33)
        • (Until 2021) (21)
        • Python (6)
        • C | C# | C++ (1)
        • Git (1)
        • Unity (4)
        • Game Dev. (0)
  • 블로그 메뉴

    • 홈
    • 💻 GitHub
    • 🟢 Velog
    • 🧩 온라인 방탈출 출시 작품 모음
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    개인 프로젝트
    위코드
    코드숨
    React
    리엑트
    1929
    Component
    파이썬
    알고리즘
    unity
    방탈출고사
    소수 구하기
    JavaScript
    CodeSoom
    pygame
    미궁 게임
    코딩 일기
    Python
    프로젝트
    Cpp
    후기
    C++
    관심사의 분리
    더라비린스
    유니티
    프로그래머스
    주간 회고
    wecode
    백준
    회고
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
SangYoonLee (SYL)
[백준] 1074번 : 미로 탐색 (🥈실버 1) (Python)
상단으로

티스토리툴바