Skip to content

Commit 8dbef07

Browse files
committed
[BOJ] #5014. 스타트링크 / 실버1 / 40분 / 성공
1 parent 18176c4 commit 8dbef07

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import sys
2+
from collections import deque
3+
4+
input = sys.stdin.readline
5+
6+
# 총 층수 F, 현재 층 S, 목표 층 G, 위 버튼 U, 아래 버튼 D
7+
F, S, G, U, D = map(int, input().split())
8+
9+
10+
def bfs():
11+
if S == G: # 강호가 이미 도착해있다면 0번 클릭
12+
return 0
13+
14+
visited = [False for _ in range(F + 1)]
15+
queue = deque([(S, 1)]) # (현재 층, 버튼 클릭 횟수)
16+
visited[S] = True
17+
18+
while queue:
19+
x, cnt = queue.popleft()
20+
21+
# 위로 이동
22+
nx = x + U
23+
if nx <= F and not visited[nx]:
24+
if nx == G: # 목표층 도착
25+
return cnt
26+
queue.append((nx, cnt + 1))
27+
visited[nx] = True # 방문여부 표시 꼭 넣어주기
28+
29+
# 아래로 이동
30+
nx = x - D
31+
if nx > 0 and not visited[nx]:
32+
if nx == G: # 목표층 도착
33+
return cnt
34+
queue.append((nx, cnt + 1))
35+
visited[nx] = True
36+
37+
# 목표층에 도달하지 못한 경우
38+
return -1
39+
40+
41+
# BFS 탐색
42+
answer = bfs()
43+
if answer == -1:
44+
print("use the stairs")
45+
else:
46+
print(answer)

0 commit comments

Comments
 (0)