728x90
🤔 문제분석
너비우선탐색으로 문제를 해결하였는데 처음 방문한경우와 이전위치에서 오는 경우 두가지를 따져서 모든 경우의 수를 구해야합니다.
💻 코드
import sys
from collections import deque
input = sys.stdin.readline
N, K = map(int, input().split())
vistied = [-1] * 100001
queue = deque()
queue.append((N))
vistied[N] = 0
ans = 0
while queue:
cur = queue.popleft()
if cur == K:
ans += 1
continue
for next in (cur*2, cur + 1, cur - 1):
if 100001 > next >=0 and (vistied[next] == vistied[cur] + 1 or vistied[next] == -1):
vistied[next] = vistied[cur] + 1
queue.append((next))
print(vistied[K])
print(ans)
🎯 피드백 및 개선사항
처음에 좌표가 100000을 넘어 갈 수 있는줄 알고 visited 배열을 어느 범위까지 생성해야하나 고민에 시간을 너무 많이 빼앗겨 버린 문제였네요…
이전위치에서 오는 경우도 고려해야함을 알게되었습니다. 이만 안녕 🖖
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 4179번 : 불! (0) | 2024.03.10 |
---|---|
[백준] 11779번 : 최소비용 구하기2 (0) | 2024.03.05 |
[백준] 1600번 : 말이 되고픈 원숭이 (1) | 2024.03.05 |
[백준] 20056번 : 마법사 상어와 파이어볼 (0) | 2024.03.03 |
[백준] 1022번 : 소용돌이 예쁘게 출력하기 (0) | 2024.03.03 |