https://www.acmicpc.net/problem/13549
3개의 연산의 우선순위 때문에 99%에서 자꾸 틀렸다고 떠서 애를 먹었다.
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
31
32
33
34
|
import sys
from collections import deque
input = sys.stdin.readline
N, K = map(int, input().split())
DELTAS = (lambda x: x - 1, lambda x: 2 * x, lambda x : x + 1)
# 순서가 반드시 x-1, x*2, x+1의 순으로 진행되어야 함
LIMIT = 100000
# bfs
def search(n, goal):
queue = deque([n])
visited = [-1] * (LIMIT + 1)
visited[n] = 0
while queue:
cur = queue.popleft()
if cur == goal:
return visited[cur]
for i, delta in enumerate(DELTAS):
new_cur = delta(cur)
if new_cur > LIMIT or new_cur < 0: continue
if visited[new_cur] == -1:
if i == 1:
queue.appendleft(new_cur) # 우선순위를 줘야함
visited[new_cur] = visited[cur]
else:
queue.append(new_cur)
visited[new_cur] = visited[cur] + 1
print(search(N, K))
|
cs |
반응형
'알고리즘 > 문제풀이' 카테고리의 다른 글
[이분탐색] BOJ 1477 휴게소 세우기 (0) | 2023.07.31 |
---|---|
[수학] BOJ 1111 IQ Test (0) | 2023.07.20 |
[정렬] BOJ 18869 멀티버스 Ⅱ (0) | 2023.07.18 |
[시뮬레이션] BOJ 17144 미세먼지 안녕! (0) | 2023.07.13 |
[BFS] BOJ 7576 토마토 (0) | 2023.07.11 |