반응형
문제 설명
입출력 예제
풀이 코드
10 x 10 크기의 보드판에서 진행되는 게임이라고 했지만 상하좌우로 움직이는게 아닌, 한 방향으로만 움직일 수 있다.
그렇기 대문에 2차원 배열이 아닌 1차원 배열로 나열해 풀 수 있다.
그리고 주어진 사다리, 뱀의 위치를 dict(딕셔너리) 타입으로 받아 주사위를 던져 도착한곳이 사다리, 뱀 위치(key)면 value로 이동시킨다.
정답 코드
from collections import deque
import sys
input = sys.stdin.readline
n, m = map(int, input().split()) # 사다리 수, 뱀 수
board = [0] * 101
visited = [False] * 101
ladder = dict()
for _ in range(n):
i,j = map(int,input().split())
ladder[i] = j
snack = dict()
for _ in range(m):
i,j = map(int,input().split())
snack[i] = j
def bfs(start):
q = deque()
q.append(start)
visited[start] = True
while q:
cur = q.popleft()
for i in range(1, 7): # 주사위 1 ~ 6
next = cur + i
if 0 < next <= 100 and not visited[next]:
if next in ladder:
next = ladder[next]
if next in snack:
next = snack[next]
if not visited[next]:
q.append(next)
visited[next] = True
board[next] = board[cur] + 1
bfs(1) # 1부터 시작
print(board[100])
'◼ 코딩테스트 > DFS,BFS' 카테고리의 다른 글
[Python/파이썬] 백준 1600번 - 말이 되고픈 원숭이 (1) | 2023.07.07 |
---|---|
[Python/파이썬] 백준 2638번 - 치즈 (0) | 2023.07.04 |
[Python/파이썬] 백준 9205 - 맥주 마시면서 걸어가기 (0) | 2023.06.16 |
[Python/파이썬] 백준 1325 - 효율적인 해킹 (0) | 2023.06.14 |
[Python/파이썬] 백준 2146 - 다리 만들기 (0) | 2023.06.12 |