일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 파이썬
- 알고리즘
- java #자바 #나동빈
- PYTHON
- react #리액트 #동빈나 #나동빈 #유튜브강의
- 프로그래머스 #파이썬 #코딩테스트 #알고리즘
- java #자바
- 다익스트라
- 프로그래머스 #파이썬 #알고리즘 #코딩테스트
- 프로그래머스
- 투포인터
- java #자바 #동빈나
- 파이썬 #알고리즘 #코딩테스트 #프로그래머스
- 백준 #파이썬 #알고리즘 #코딩테스트
- java #자바 #생활코딩
- 파이썬 #백준 #알고리즘 #코딩테스트
- Dijkstra
- dp
- 백트랙킹
- BFS
- 재귀
- 코딩테스트
- css #웹 #생활코딩
- 자바 #java
- css #생활코딩 #웹
- 백준 #알고리즘 #파이썬 #코딩테스트
- 다이나믹프로그래밍
- 백준
- DFS
- react #리액트 #동빈나
- Today
- Total
커리까지
[백준] 12761번 돌다리 파이썬 본문
문제
동규와 주미는 일직선 상의 돌 다리 위에있다. 돌의 번호는 0 부터 100,000 까지 존재하고 동규는 �(N)번 돌 위에, 주미는 �(M)번 돌 위에 위치하고 있다. 동규는 주미가 너무 보고싶기 때문에 최대한 빨리 주미에게 가기 위해 �,�(A, B) 만큼의 힘을 가진 스카이 콩콩을 가져왔다. 동규가 정한 다리를 건너는 규칙은 턴 방식인데, 한 턴에 이동할 수 있는 거리는 이러하다. 현 위치에서 +1칸, -1칸을 이동할 수 있고, 스카이 콩콩을 이용해 현 위치에서 �(A)나 �(B)만큼 좌우로 점프할 수 있으며, 순간적으로 힘을 모아 현 위치의 �(A)배나 �(B)배의 위치로 이동을 할 수 있다. 예를 들어 지금 동규가 7번 돌 위에 있고 스카이 콩콩의 힘이 8이면 그냥 점프를 해서 15번 돌에 갈 수도 있고, 순간적으로 힘을 모아 56번 돌에 갈 수도 있다는 것이다. 주어진 8가지의 방법 중 적절한 방법을 골라서 최대한 빨리 동규가 주미를 만날 수 있게 도와주자. 단, 이동 과정에서 100,000보다 크거나 0보다 작은 번호의 돌은 존재하지 않으므로 갈 수 없고, 같은 방법을 계속 사용해도 되며 항상 도달할 수 있는 케이스만 주어진다.
입력
입력의 첫 줄에 스카이 콩콩의 힘 �(A)와 �(B), 그리고 동규의 현재위치 �(N), 주미의 현재 위치 �(M)이 주어진다. (단, 2≤�,�≤30(2 \le A, B \le 30) 이고 0≤�,�≤100,000(0 \le N, M \le 100,000))
출력
동규가 주미에게 도달하기 위한 최소한의 이동 횟수를 출력하라.
예제 입력 1
2 3 1 20
예제 출력 1
4
예제 입력 2
3 7 2 98500
예제 출력 2
10
제출 답안
from collections import deque
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10**9)
a, b, n, m = map(int, input().split())
move = [1, -1, -a, a, -b, b, a, b]
visited = [False] * 100001
def bfs(n, m):
q = deque([(n, 0)])
visited[n] = True
while q:
n, cnt = q.popleft()
if n == m:
return cnt
for i, v in enumerate(move):
nxt = n + v if i < 6 else n * v
if 0 <= nxt <= 100000:
if not visited[nxt]:
visited[nxt] = True
q.append((nxt, cnt + 1))
print(bfs(n, m))
'알고리즘 > 풀이' 카테고리의 다른 글
[백준] 18404번 현명한 나이트 파이썬 (0) | 2023.08.04 |
---|---|
[백준] 16174번 점프왕 쩰리(Large) 파이썬 (0) | 2023.08.03 |
[백준] 3187번 양치기 꿍 파이썬 (0) | 2023.08.02 |
[백준] 16948번 데스 나이트 파이썬 (0) | 2023.08.02 |
[백준] 1189번 컴백홈 파이썬 (0) | 2023.08.01 |