해결 과정
BFS라는데에서 IDEA를 얻어 비슷하게 풀었다. 처음엔 메모리 초과, IndexError, 틀렸습니다가 차례로 나왔는데, 음수 인것 처리 안해주도록 (0과 양수는 처리) 100000을 넘어가지 않도록 처리해주니 완료.
나의 풀이
from collections import deque
def findShortestNum(start, end):
visited = [False] * 100001
answer = 0
queue = deque([start])
visited[start] = True
while queue:
for _ in range(len(queue)):
cur = queue.popleft()
if cur == end:
return answer
if cur - 1 >= 0 and cur - 1 < 100001 and not visited[cur-1]:
queue.append(cur - 1)
visited[cur-1] = True
if cur + 1 < 100001 and not visited[cur+1]:
queue.append(cur + 1)
visited[cur+1] = True
if cur * 2 < 100001 and not visited[cur*2]:
queue.append(cur * 2)
visited[cur*2] = True
answer += 1
return answer
N, K = map(int, input().split())
print(findShortestNum(N, K))
다른 풀이
IDEA
'Coding Test > 문제 풀이' 카테고리의 다른 글
[문제 풀이] 백준 2579 (0) | 2022.04.07 |
---|---|
[문제 풀이] 백준 1780 (0) | 2022.04.05 |
[문제 풀이] 백준 1463 (0) | 2022.04.04 |
[문제 풀이] 백준 1389 (0) | 2022.04.04 |
[문제 풀이] 백준 1074 (0) | 2022.03.29 |