-
[백준 1697번] 숨바꼭질Coding Test/백준 2021. 1. 8. 17:37
# 문제
내 풀이
from collections import deque n, k = map(int, input().split()) table = [0] * 100001 # 위치를 이동할 수직선 생성 # BFS 함수 정의 def bfs(x): queue = deque([x]) # 큐 생성 # 걷기와 순간이동을 수행할 방향 벡터 생성 dx = [1, 1, 2] op = ['-', '+', '*'] while queue: p = queue.popleft() # 걷거나 순간이동하는 경우의 수 고려 for i in range(3): np = eval(str(p) + op[i] + str(dx[i])) # 범위를 벗어나면 무시 if np < 0 or np > 100000 or np == x: continue # 아직 방문하지 않은 위치라면 큐에 삽입하고 최단거리 기록 if table[np] == 0: queue.append(np) table[np] = table[p] + 1 bfs(n) # BFS 수행 print(table[k]) # k까지의 최단거리 출력
고려해볼 점
방향벡터의 또 다른 방법으로 ```for next_step in (v-1, v+1, v*2):```을 생각해볼 수 있다. 조금 더 깔끔할 수 있을 것 같다.
'Coding Test > 백준' 카테고리의 다른 글
[백준 7562번] 나이트의 이동 (0) 2021.01.10 [백준 7569번] 토마토 - 3차원 (0) 2021.01.10 [백준 7576번] 토마토 (0) 2021.01.06 [백준 1021번] 회전하는 큐 (0) 2021.01.05 [백준 1874번] 스택 수열 (0) 2021.01.05