백준 5014 문제 풀이

mauz·2022년 4월 21일
0

🐒 스타트링크

https://www.acmicpc.net/problem/5014

✍ 나의 풀이

from collections import deque


F, S, G, U, D = map(int, input().split())

visited = [False] * (10**6+1)

def bfs(s):
  count = 0
  q = deque()
  q.append(s)
  visited[s] = True
  while q:
    for _ in range(len(q)):
      x = q.popleft()

      if x == G:
        return count

      for i in (x+U,x-D):
        if 1 <= i <= F:
          if not visited[i]:
            q.append(i)
            visited[i] = True
    count += 1

  return 'use the stairs'
    
print(bfs(S))

https://velog.io/@mauserne/%EB%B0%B1%EC%A4%80-16954-%EB%AC%B8%EC%A0%9C-%EB%B6%84%EC%84%9D-python에서 얻은 아이디어로 금방 풀이가 떠올랐다.

while문 안의 for _ in range(len(q))로 버튼을 한번 누를때마다 이동할 수 있는 경우의 수를 모두 탐색하기를 반복할 수 있다


🧠 문제 이해

처음에 i 범위를 10**6 까지로 잘 못 생각해서 오답을 맞았다.

      for i in (x+U,x-D):
        if 1 <= i <= 10**6: #<<
          if not visited[i]:
            q.append(i)
            visited[i] = True
입력
100 100 1 1 100

출력
2

정상출력
use the stairs
profile
쥐구멍에 볕드는 날

0개의 댓글