[백준] 16928번 뱀과 사다리 게임 _ Python

2024. 3. 17. 23:42·Algorithms/Graph

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

 

16928번: 뱀과 사다리 게임

첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x < y)가 주어진다. x번 칸에 도착하면, y번 칸으

www.acmicpc.net

 

 


 

1. Preview

시간 복잡도: O(6*NM), bfs

 

공간 복잡도: O(NM)

 

유형: 그래프 탐색, bfs

 

 


 

2. 초기 접근 방법

visited[e] : 사다리

visited[nx] : 일반 주사위 길

2가지 경우 모두 queue에 삽입하여, 해당 경우를 고려해 탐색하게 된다.

for s, e in road:
    if s == nx and not visited[e]:
        visited[e] = visited[x] + 1
        q.append(e)

# 중복 방문 X
if not visited[nx]:
    visited[nx] = visited[x] + 1
    q.append(nx)

 

 


 

3. 생각

문제에서 요구하는 것은 뱀과 사다리를 만났을 때 선택해서 타거나, 타지 않는 것이 아니라 무조건 타는 것이다.

요구 사항을 정확히 파악하고 로직을 철저히 검증하자.

 

 


 

4. 코드

import sys
from collections import deque

input = sys.stdin.readline

# 사다리 수, 뱀 수
N, M = map(int, map(int, input().split()))

road = []
visited = [0] * 106
for _ in range(N + M):
    s, e = map(int, map(int, input().split()))
    road.append((s, e))

q = deque()
q.append(1)

while q:
    x = q.popleft()

    if x == 100:
        print(visited[100])
        exit()

    for i in range(1, 7):
        nx = x + i

        # 사다리나 뱀일 경우, 이용한다.
        for s, e in road:
            if nx == s:
                nx = e

        # 중복 방문 X
        if not visited[nx]:
            visited[nx] = visited[x] + 1
            q.append(nx)
저작자표시

'Algorithm > Graph' 카테고리의 다른 글

[백준] 2206번 벽 부수고 이동하기 _ Python  (0) 2024.04.09
[백준] 9466번 텀 프로젝트 _ Python  (0) 2024.03.20
[백준] 16624번 피리 부는 사나이 _ Python  (0) 2024.03.10
[백준] 11559번 Puyo Puyo _ Python  (0) 2024.02.01
[백준] 1325번 효율적인 해킹 _ Python  (0) 2023.11.28
'Algorithms/Graph' 카테고리의 다른 글
  • [백준] 2206번 벽 부수고 이동하기 _ Python
  • [백준] 9466번 텀 프로젝트 _ Python
  • [백준] 16624번 피리 부는 사나이 _ Python
  • [백준] 11559번 Puyo Puyo _ Python
wch_t
wch_t
  • wch_t
    끄적끄적(TIL)
    wch_t
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (168)
      • Architecture (0)
      • Algorithm (67)
        • Math (5)
        • Simulation (1)
        • Data Structure (4)
        • DP (7)
        • Brute Fource (10)
        • Binary Search (6)
        • Greedy (2)
        • Graph (11)
        • Mst (1)
        • Shortest path (10)
        • Two Pointer (1)
        • Tsp (3)
        • Union Find (2)
        • Mitm (1)
      • CS (2)
        • 데이터베이스 (5)
        • 네트워크 (5)
      • DB (6)
      • DevOps (15)
        • AWS (9)
        • Docker (1)
        • CI-CD (5)
      • Error (1)
      • Project (0)
        • kotrip (0)
      • Spring (59)
        • 끄적끄적 (5)
        • 기본 (9)
        • MVC 1 (7)
        • MVC 2 (11)
        • ORM (8)
        • JPA 1 (7)
        • JPA 2 (5)
        • Spring Data Jpa (7)
      • Test (2)
      • TIL (5)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    Sxssf
    백준 3015 파이썬
    애플
    spring-cloud-starter-aws-secrets-manager-config
    aws secrets manager
    TempTable
    scope
    view algorithm
    백준 17299 파이썬
    response_mode
    docker: not found
    Jenkins
    Merge
    docker
    spring-cloud-starter-bootstrap
    백준 17289 파이썬
    form_post
    apache poi
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
wch_t
[백준] 16928번 뱀과 사다리 게임 _ Python
상단으로

티스토리툴바