728x90
  • 문제
  • 해설
    • import sys
      from collections import deque
      
      sys.setrecursionlimit(1000000)
      
      subin, sister = [*map(int, sys.stdin.readline().strip().split())]
      
      # 시작부터 수빈이가 선두인 경우는 수빈이가 뒷걸음치는 것만 가능
      if subin >= sister:
          print(subin - sister)
          sys.exit()
      
      q = deque()
      map_ = [0] * 200000
      
      
      def bfs(subin_position, current_seconds):
          candidates = [subin_position - 1, subin_position + 1, 2 * subin_position]
          candidates = [candidate for candidate in candidates
                        if 0 <= candidate <= 100000 and map_[candidate] == 0]
          next_seconds = current_seconds + 1
          for candidate in candidates:
              # 수빈이가 동생 찾았을 때
              if candidate == sister:
                  print(next_seconds)
                  sys.exit()
      
              map_[candidate] = next_seconds
      
              q.appendleft((candidate, next_seconds))
          if len(q):
              bfs(*q.pop())
      
      
      bfs(subin, 0)
  • 포인트
    • BFS 문제인 걸 알기
728x90

'Algorithm-Problems > 백준' 카테고리의 다른 글

[백준][1759] 암호 만들기  (0) 2022.02.09
[백준][1707] 이분 그래프  (0) 2022.02.09
[백준][1476] 날짜 계산  (0) 2022.02.06
[백준][1260] DFS와 BFS  (0) 2022.02.06
[백준][1182] 부분수열의 합  (0) 2022.02.06

+ Recent posts