문제
5014번: 스타트링크
첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다.
www.acmicpc.net
알고리즘
- bfs 탐색을 통해 문제를 수행한다.
코드
import sys
from collections import deque
# bfs 탐색
def bfs():
visited = [1e9] * 1000001
queue = deque([s])
visited[s] = 0
while queue:
target = queue.popleft()
# 스타트 링크에 도착했으면 버튼을 누른 횟수 출력
if target == g:
return visited[target]
# 반복문을 통해 업/다운
for i in (u, -d):
# 범위 내에 있고 탐색하지 않았다면 탐색
if 1 <= i + target <= f and visited[i + target] == 1e9:
visited[i + target] = min(visited[target] + 1, visited[i + target]) # 위치로 가기 위한 최솟값을 구함.
queue.append(i + target)
# 스타트 링크에 도착하지 못한다면 str 출력
return "use the stairs"
# f: 건물 층수
# s: 현재 위치
# g: 스타트 링크 위치
# u: 위로 가는 버튼
# d: 아래로 가는 버튼
f, s, g, u, d = map(int, sys.stdin.readline().split())
print(bfs())
github
GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법
내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.
github.com
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 2589번(파이썬): 보물섬 (0) | 2022.06.10 |
---|---|
[baekjoon] 백준 2096번(파이썬): 내려가기 (0) | 2022.06.08 |
[baekjoon] 백준 13549번(파이썬): 숨바꼭질 3 (1) | 2022.06.06 |
[baekjoon] 백준 2565번(파이썬): 전깃줄 (0) | 2022.06.05 |
[baekjoon] 백준 11048번(파이썬): 이동하기 (0) | 2022.06.02 |