반응형
https://www.acmicpc.net/problem/1697
import collections
n, k = map(int, input().split())
q = collections.deque()
q.append(n)
discovered = [n]
count = 0
while q:
for i in range(len(q)):
cur = q.popleft()
if cur == k:
print(count)
quit()
next = [cur-1, cur+1, 2*cur]
for j in range(3):
if next[j] not in discovered and 100000>=next[j]>=0:
discovered.append(next[j])
q.append(next[j])
count += 1
처음엔 뭔 문제지? 했는데 bfs로 풀 수 있다.
tree의 가지가 무한히 뻗어나가지 않게 적절히 가지치기를 해주면 된다. (discovered)
근데 한가지 걸렸던 건 나는 이 유형이 그래프 문제임을 알고 들어갔지만
만약 유형을 몰랐어도 내가 bfs 접근을 생각할 수 있었을 까란 생각이 들었다..
댓글