코테 노트/백준

백준 5014 스타트링크 Python 3

화요밍 2022. 2. 5. 13:24
728x90
반응형

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

 

5014번: 스타트링크

첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다.

www.acmicpc.net

 

최종 코드

 

GitHub - hwayeon351/BEAKJOON-Algorithms: 백준 알고리즘 소스 코드 모음

백준 알고리즘 소스 코드 모음. Contribute to hwayeon351/BEAKJOON-Algorithms development by creating an account on GitHub.

github.com

import sys
from collections import deque

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

q = deque([[S, 0]])
visit = [0]*(F+1)
visit[S] = 1
while q:
    now, cnt = q.popleft()
    if now == G:
        print(cnt)
        break
    if now+U <= F and not visit[now+U]:
        visit[now+U] = 1
        q.append([now+U, cnt+1])
    if now-D >= 1 and not visit[now-D]:
        visit[now-D] = 1
        q.append([now-D, cnt+1])
if now != G: print("use the stairs")

풀이 과정

풀이 시간 8분

import sys
from collections import deque

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

#[현재 강호의 위치, 버튼을 누른 횟수]
q = deque([[S, 0]])
visit = [0]*(F+1)
visit[S] = 1

while q:
    now, cnt = q.popleft()
    
    #스타트링크 층에 도착한 경우, 탐색 종료
    if now == G:
        print(cnt)
        break
        
    #U 버튼 클릭
    if now+U <= F and not visit[now+U]:
        visit[now+U] = 1
        q.append([now+U, cnt+1])
        
    #D 버튼 클릭
    if now-D >= 1 and not visit[now-D]:
        visit[now-D] = 1
        q.append([now-D, cnt+1])
        
#완전탐색 종료 후에도 스타트링크 층에 도착할 수 없는 경우
if now != G: print("use the stairs")

#시간복잡도 = O(V+E), 공간복잡도 = O(n)

 

728x90
반응형

'코테 노트 > 백준' 카테고리의 다른 글

백준 9019 DSLR Python 3  (0) 2022.02.07
백준 6593 상범 빌딩 Python 3  (0) 2022.02.06
백준 7576 토마토 Python 3  (0) 2022.02.04
백준 1697 숨바꼭질 Python 3  (0) 2022.02.04
백준 2178 미로 탐색 Python 3  (0) 2022.02.03