컴공생의 다이어리
[파이썬, Python] 백준 12761번 : 돌다리 본문
백준 12761번 : 돌다리
내 코드
from collections import deque
# a, b : 스카이 콩콩의 힘
# n : 동규의 현재 위치
# m : 주미의 현재 위치
a, b, n, m = map(int, input().split())
dp = dict() # 각 돌의 최소 이동 횟수
dp[n] = 0
queue = deque([n]) # n에서 시작
while queue: # bfs 수행
curr = queue.popleft()
for i in {1, -1, a, -a, b, -b}: # +1칸, -1칸, +A칸, -A칸, +B칸, -B칸 이동
val = curr + i
if 0 <= val <= 100000 and val not in dp:
dp[val] = dp[curr] + 1
queue.append(val)
for i in {a, b}: # A배나 B배의 위치로 이동
val = curr * i
if 0 <= val <= 100000 and val not in dp:
dp[val] = dp[curr] + 1
queue.append(val)
if m in dp: # m에 도달할 수 있는 경우
break # 종료
print(dp[m])
728x90
반응형
'Development > Algorithm & Coding Test' 카테고리의 다른 글
[프로그래머스] 전력망을 둘로 나누기 - 파이썬(Python) (0) | 2022.07.03 |
---|---|
[프로그래머스] 피로도 - 파이썬(Python) (0) | 2022.07.02 |
[프로그래머스] 스킬트리 - 파이썬(Python) (0) | 2022.06.30 |
[프로그래머스] 소수 만들기 - 파이썬(Python) (0) | 2022.06.29 |
[프로그래머스] 괄호 변환 - 파이썬(Python) (0) | 2022.06.28 |
Comments