728x90
반응형
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
정답 code
#뱀과 사다리 게임
from collections import deque
import sys
input = sys.stdin.readline
def bfs(v):
queue = deque()
queue.append(v)
visit[v] = 1
while queue:
target = queue.popleft()
for i in range(1,7):
dice = target + i
if dice > 100:
continue
#해당 인덱스에 적힌 수 추출(뱀이나 사다리가 있다면 이어진 수)
cnt = bord[dice]
#방문하지 않은 칸이면
if visit[cnt] == 0:
queue.append(cnt)
#주사위 굴리기 전 칸까지 주사위 횟수 +1
visit[cnt] = visit[target]+1
if cnt == 100:
return
n, m = map(int,input().split())
bord = [i for i in range(101)]
for i in range(n+m):
x,y = map(int,input().split())
#사다리, 뱀 적용
bord[x] = y
visit = [0] * 101
bfs(1)
print(visit[100]-1)
solution
처음엔 문제를 훨씬 어렵게 생각 했었다.
주어진 사다리를 이용해 최단기간으로 올라가는 길을 먼저 찾고 탐색을 하려했었다.
결국 그냥 단순히 1부터 bfs를 돌려 탐색하는 방법으로 풀었다.
1부터 주사위 1~6에대해 visit에 주사위 횟수를 저장해 간다.
사다리랑 뱀을 적용하기 위해 bord리스트 해당 인덱스 값을 변경해 사용 하였다.
728x90
반응형
'알고리즘 > 백준[baekjoon]' 카테고리의 다른 글
[baekjoon] 백준 17626번 : Four Squares (by python 파이썬) 시간초과,dp,브루트포스 (0) | 2022.08.10 |
---|---|
[baekjoon] 백준 17219번 : 비밀번호 찾기 (by python 파이썬) rstrip,딕셔너리 (0) | 2022.08.08 |
[baekjoon] 백준 16236번 : 아기 상어 (by python 파이썬) bfs, lambda정렬 (0) | 2022.08.02 |
[baejoon] 백준 14500번 : 테트로미노 (by python 파이썬) BFS (0) | 2022.07.30 |
[baekjoon] 백준 11727번 : 2*n 타일링 2 (by python 파이썬) 다이나믹 프로그래밍 (0) | 2022.07.25 |