난이도 : 실버1 유형 : BFS 카테고리 : 백준 온라인 저지 날짜 : 2022-02-18
문제 풀이
점 N의 범위 (0 ≤ N ≤ 100,000)
1 2 3
visited는 크기가 100001인 배열 visited = [0]*100001# 방법1 visited = [0for i inrange(100001)] # 방법2
소요 시간 카운트하는 방법
1
visited[i] = visited[v] + 1
점 N 방문처리할 필요 없음
1 2 3 4
N을 다시 방문하는 경로는 어차피 최단경로가 아님 defbfs(N, K, visited): queue = deque([N]) visited[N] = 1# 불필요
전체 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
import sys from collections import deque N, K = map(int, sys.stdin.readline().split(' ')) visit = [0for i inrange(100001)] defbfs(N, K, visited): queue = deque([N]) while queue: v = queue.popleft() if v == K: return visit[K]; for i in (v-1, v+1, v*2): if (-1<i<100001) andnot visit[i]: queue.append(i) visit[i] = visit[v] + 1 print(bfs(N, K, visit))