[๋ฐฑ์ค€] 16928. ๋ฑ€๊ณผ ์‚ฌ๋‹ค๋ฆฌ ๊ฒŒ์ž„/Python - Gold5

2025. 2. 10. 18:37ยทCoding Test/Algorithms

โ“๋ฌธ์ œ

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

์„ฑ๋Šฅ ์š”์•ฝ

๋ฉ”๋ชจ๋ฆฌ: 34968 KB, ์‹œ๊ฐ„: 60 ms

๋ถ„๋ฅ˜

๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰, ๊ทธ๋ž˜ํ”„ ์ด๋ก , ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰

 

๋ฌธ์ œ ์„ค๋ช…

๋ฑ€๊ณผ ์‚ฌ๋‹ค๋ฆฌ ๊ฒŒ์ž„์„ ์ฆ๊ฒจ ํ•˜๋Š” ํ๋ธŒ๋Ÿฌ๋ฒ„๋Š” ์–ด๋А ๋‚  ๊ถ๊ธˆํ•œ ์ ์ด ์ƒ๊ฒผ๋‹ค.

์ฃผ์‚ฌ์œ„๋ฅผ ์กฐ์ž‘ํ•ด ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์ˆ˜๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋ฉด, ์ตœ์†Œ ๋ช‡ ๋ฒˆ๋งŒ์— ๋„์ฐฉ์ ์— ๋„์ฐฉํ•  ์ˆ˜ ์žˆ์„๊นŒ?

๊ฒŒ์ž„์€ ์ •์œก๋ฉด์ฒด ์ฃผ์‚ฌ์œ„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ฃผ์‚ฌ์œ„์˜ ๊ฐ ๋ฉด์—๋Š” 1๋ถ€ํ„ฐ 6๊นŒ์ง€ ์ˆ˜๊ฐ€ ํ•˜๋‚˜์”ฉ ์ ํ˜€์žˆ๋‹ค. ๊ฒŒ์ž„์€ ํฌ๊ธฐ๊ฐ€ 10×10์ด๊ณ , ์ด 100๊ฐœ์˜ ์นธ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋Š” ๋ณด๋“œํŒ์—์„œ ์ง„ํ–‰๋œ๋‹ค. ๋ณด๋“œํŒ์—๋Š” 1๋ถ€ํ„ฐ 100๊นŒ์ง€ ์ˆ˜๊ฐ€ ํ•˜๋‚˜์”ฉ ์ˆœ์„œ๋Œ€๋กœ ์ ํ˜€์ ธ ์žˆ๋‹ค.

ํ”Œ๋ ˆ์ด์–ด๋Š” ์ฃผ์‚ฌ์œ„๋ฅผ ๊ตด๋ ค ๋‚˜์˜จ ์ˆ˜๋งŒํผ ์ด๋™ํ•ด์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ”Œ๋ ˆ์ด์–ด๊ฐ€ i๋ฒˆ ์นธ์— ์žˆ๊ณ , ์ฃผ์‚ฌ์œ„๋ฅผ ๊ตด๋ ค ๋‚˜์˜จ ์ˆ˜๊ฐ€ 4๋ผ๋ฉด, i+4๋ฒˆ ์นธ์œผ๋กœ ์ด๋™ํ•ด์•ผ ํ•œ๋‹ค. ๋งŒ์•ฝ ์ฃผ์‚ฌ์œ„๋ฅผ ๊ตด๋ฆฐ ๊ฒฐ๊ณผ๊ฐ€ 100๋ฒˆ ์นธ์„ ๋„˜์–ด๊ฐ„๋‹ค๋ฉด ์ด๋™ํ•  ์ˆ˜ ์—†๋‹ค. ๋„์ฐฉํ•œ ์นธ์ด ์‚ฌ๋‹ค๋ฆฌ๋ฉด, ์‚ฌ๋‹ค๋ฆฌ๋ฅผ ํƒ€๊ณ  ์œ„๋กœ ์˜ฌ๋ผ๊ฐ„๋‹ค. ๋ฑ€์ด ์žˆ๋Š” ์นธ์— ๋„์ฐฉํ•˜๋ฉด, ๋ฑ€์„ ๋”ฐ๋ผ์„œ ๋‚ด๋ ค๊ฐ€๊ฒŒ ๋œ๋‹ค. ์ฆ‰, ์‚ฌ๋‹ค๋ฆฌ๋ฅผ ์ด์šฉํ•ด ์ด๋™ํ•œ ์นธ์˜ ๋ฒˆํ˜ธ๋Š” ์›๋ž˜ ์žˆ๋˜ ์นธ์˜ ๋ฒˆํ˜ธ๋ณด๋‹ค ํฌ๊ณ , ๋ฑ€์„ ์ด์šฉํ•ด ์ด๋™ํ•œ ์นธ์˜ ๋ฒˆํ˜ธ๋Š” ์›๋ž˜ ์žˆ๋˜ ์นธ์˜ ๋ฒˆํ˜ธ๋ณด๋‹ค ์ž‘์•„์ง„๋‹ค.

๊ฒŒ์ž„์˜ ๋ชฉํ‘œ๋Š” 1๋ฒˆ ์นธ์—์„œ ์‹œ์ž‘ํ•ด์„œ 100๋ฒˆ ์นธ์— ๋„์ฐฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๊ฒŒ์ž„ํŒ์˜ ์ƒํƒœ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, 100๋ฒˆ ์นธ์— ๋„์ฐฉํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ์‚ฌ์œ„๋ฅผ ๊ตด๋ ค์•ผ ํ•˜๋Š” ํšŸ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•ด๋ณด์ž.

โœ๐Ÿปํ’€์ด

์ด ๋ฌธ์ œ๋Š” BFS๋กœ ํ’€๋ฉด ๋œ๋‹ค.

์‚ฌ๋‹ค๋ฆฌ์™€ ๋ฑ€์„ ์‚ฌ์ „ํ˜•์œผ๋กœ ์ €์žฅํ•œ๋‹ค. ์‚ฌ์ „ํ˜•์œผ๋กœ ์ €์žฅํ•˜๋Š” ํŽธ์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

์ถœ๋ฐœ์ง€๊ฐ€ 1์ด๋ผ๊ณ  ํ•˜์˜€์œผ๋ฏ€๋กœ ํ์— 1์„ ๋„ฃ์–ด์ฃผ๊ณ  ๊ทธ ๋’ค์—๋Š” ์ฃผ์‚ฌ์œ„๋ฅผ ๊ตด๋ฆฌ๋ฉด ๋œ๋‹ค. cnt ๊ฐ’์„ ๊ฐ™์ด ํ์— ๋„ฃ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ๋กœ ์‹คํŒจํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์šฐ๋ฆฌ๋Š” while q ์•ˆ์— q ๊ธธ์ด ๋งŒํผ ๋ฐ˜๋ณตํ•œ ํ›„ cnt + 1์„ ํ•œ๋‹ค.
1์ผ ๋•Œ ์šฐ๋ฆฌ๊ฐ€ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์œ„์น˜๋Š” 2, 3, 4, 5, 6, 7 ์ด๋‹ค. ์ฃผ์‚ฌ์œ„๋ฅผ ๊ตด๋ฆฐ ํšŸ์ˆ˜๋Š” ์–ด๋А ์œ„์น˜๋“  ๊ฒฐ๊ตญ 1์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ด๋ฅผ ํ์— ์ €์žฅํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋” ์‚ฌ์šฉํ•˜๊ธฐ ๋ณด๋‹ค. ๋ฐ˜๋ณต๋ฌธ์„ ๋ฒ—์–ด๋‚ฌ์„ ๋•Œ 1 ์ฆ๊ฐ€ํ•˜๋Š” ํŽธ์ด ๋” ๋‚ซ๋‹ค.

์œ„ ๋ฐฉ์‹์„ ๋ฐ˜๋ณตํ•˜์—ฌ 100์— ๋„์ฐฉํ•˜๋ฉด ๊ทธ ๋•Œ์˜ cnt๋ฅผ ์ถœ๋ ฅํ•œ ํ›„ ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด์„œ ๋๋‚ธ๋‹ค. 

๐Ÿ’ป์ฝ”๋“œ

์ฒ˜์Œ ์‹œ๋„ํ•œ ์ฝ”๋“œ

import sys
from collections import deque

input = sys.stdin.readline

N, M = map(int, input().split()) # N -> ์‚ฌ๋‹ค๋ฆฌ ์ˆ˜, M -> ๋ฑ€ ์ˆ˜
ladders = [list(map(int, input().split())) for _ in range(N)]
snakes = [list(map(int, input().split())) for _ in range(M)]

def bfs():
    global res
    q = deque()
    q.append((1, 0))

    while q:
        cur, cnt = q.popleft()
        for i in range(N):
            if ladders[i][0] == cur:
                cur = ladders[i][1]

        for i in range(M):
            if snakes[i][0] == cur:
                cur = snakes[i][1]

        for i in range(1, 7):
            nx = cur + i
            if nx == 100:
                res = cnt + 1
                return

            if nx < 100:
                q.append((nx, cnt + 1))
                res = cnt + 1


res = 0
bfs()
print(res)

โžก๏ธ ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ๋กœ ์‹คํŒจ

์ •๋‹ต ์ฝ”๋“œ

import sys
from collections import deque

input = sys.stdin.readline

N, M = map(int, input().split())
ladders = {}
for _ in range(N):
    x, y = map(int, input().split())
    ladders[x] = y
snakes = {}
for _ in range(M):
    x, y = map(int, input().split())
    snakes[x] = y

def dfs():
    visited = [0] * 101
    visited[1] = 1
    q = deque()
    q.append(1)
    cnt = 0
    while q:
        l = len(q)
        for _ in range(l):
            cur = q.popleft()
            if cur == 100:
                print(cnt)
                return

            for i in range(1, 7):
                nx = cur + i
                if nx <= 100 and not visited[nx]:
                    visited[nx] = 1
                    if nx in ladders.keys():
                        visited[ladders[nx]] = 1
                        q.append(ladders[nx])
                    elif nx in snakes.keys():
                        visited[snakes[nx]] = 1
                        q.append(snakes[nx])
                    else:
                        q.append(nx)

        cnt += 1

dfs()

๐Ÿ“ํ›„๊ธฐ

๋ญ”๊ฐ€ ๊ทธ๋ƒฅ ๋ฆฌ์ŠคํŠธ๋กœ ํ‘ธ๋Š” ๊ฒŒ ๋‹น์—ฐํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ์•ž์œผ๋กœ python์œผ๋กœ ํ’€ ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ๋„ ์ถฉ๋ถ„ํžˆ ๊ณ ๋ฏผ์„ ํ•ด๋ด์•ผ๊ฒ ๋‹ค.

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Coding Test > Algorithms' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฐฑ์ค€] 18870. ์ขŒํ‘œ ์••์ถ•/Python - Silver2  (0) 2025.02.19
[๋ฐฑ์ค€] 2206. ๋ฒฝ ๋ถ€์ˆ˜๊ณ  ์ด๋™ํ•˜๊ธฐ/Python - Gold 3  (0) 2025.02.12
[๋ฐฑ์ค€] 7569. ํ† ๋งˆํ† /Python - Gold5  (2) 2025.02.09
[๋ฐฑ์ค€] 1012. ์œ ๊ธฐ๋† ๋ฐฐ์ถ”/Python - Silver 2  (0) 2025.02.06
[๋ฐฑ์ค€] 2667. ๋‹จ์ง€๋ฒˆํ˜ธ๋ถ™์ด๊ธฐ/Python - Silver 1  (1) 2025.02.05
'Coding Test/Algorithms' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฐฑ์ค€] 18870. ์ขŒํ‘œ ์••์ถ•/Python - Silver2
  • [๋ฐฑ์ค€] 2206. ๋ฒฝ ๋ถ€์ˆ˜๊ณ  ์ด๋™ํ•˜๊ธฐ/Python - Gold 3
  • [๋ฐฑ์ค€] 7569. ํ† ๋งˆํ† /Python - Gold5
  • [๋ฐฑ์ค€] 1012. ์œ ๊ธฐ๋† ๋ฐฐ์ถ”/Python - Silver 2
The Engineer, Lucy
The Engineer, Lucy
  • The Engineer, Lucy
    Growing up for My Future๐Ÿ’•
    The Engineer, Lucy
    • Instagram
    • GitHub
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (171) N
      • Linux (26)
      • Infra (9)
      • Cloud (25)
        • AWS (2)
        • GCP (3)
        • Docker (4)
        • Kubernetes (14)
        • IaC (2)
      • NGINX (1)
      • DevOps (3)
      • Computer Science (17)
        • Data Structure (0)
        • Algorithms (1)
        • Operating System (3)
        • Network (11)
        • Database System (2)
      • Coding Test (85) N
        • Algorithms (77) N
        • SQL (7)
      • ETC (5)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๊ณต์ง€์‚ฌํ•ญ

  • ๋งํฌ

    • Lucy's Instagram
    • Lucy's GitHub
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ๋ฐฑ์ค€
    cs ๊ธฐ์ดˆ ์ง€์‹ ์ •๋ฆฌ
    ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค
    ๋„์ปค
    Baekjoon
    dfs
    network
    bfs
    K8s
    Shell Script
    ์‰˜ ์Šคํฌ๋ฆฝํŠธ
    ์…ธ ์Šคํฌ๋ฆฝํŠธ
    ๋„ˆ๋น„์šฐ์„ ํƒ์ƒ‰
    ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ
    ๋„คํŠธ์›Œํฌ
    ํ‹ฐ์Šคํ† ๋ฆฌ์ฑŒ๋ฆฐ์ง€
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    ์˜ค๋ธ”์™„
    Linux
    docker
    programmers
    ๋ฆฌ๋ˆ…์Šค
    ๋„คํŠธ์›Œํฌ ๊ธฐ์ดˆ ์ง€์‹
    ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ
    ์ž๋ฐ”
    Kubernetes
    ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ 2๊ธ‰
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๊ณต๋ถ€
    Shell
    Java
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
The Engineer, Lucy
[๋ฐฑ์ค€] 16928. ๋ฑ€๊ณผ ์‚ฌ๋‹ค๋ฆฌ ๊ฒŒ์ž„/Python - Gold5
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”