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
'''
5014번: 스타트링크 / silver 1 / BFS
'''
from collections import deque
# 입력받기
max_floor, start, end, up, down = map(int, input().split())
# que, visited 리스트 선언 및 초기화
que = deque()
visited = list(0 for _ in range(max_floor + 1))
que.append((start))
visited[start] = 1
# BFS 알고리즘
while que:
now_floor = que.popleft()
if now_floor == end:
print(visited[end] - 1)
exit()
for next_floor in (now_floor + up, now_floor - down):
if 0 < next_floor <= max_floor and visited[next_floor] == 0:
visited[next_floor] = visited[now_floor] + 1
que.append(next_floor)
if visited[end] == 0:
print('use the stairs')
코드 리뷰
- 해당 문제는 BFS 알고리즘을 활용하여 문제를 해결했습니다!
- visited 는 방문한 층이면 1이상의 값을 넣고, 방문하지 않은 층이면 0을 넣었습니다.
- 따라서 visited 리스트는 층수에 방문을 했는지 안했는지를 0 또는 1이상의 값으로 확인을 하며 /버튼을 누른 횟수를 측정하기도 합니다. (실제 누른 버튼 횟수 - 1)
'백준 문제풀이' 카테고리의 다른 글
16637번: 괄호 추가하기 / gold 3 / 브루트포스 (0) | 2023.04.28 |
---|---|
3109번: 빵집 / gold 2 / DFS, 그리디 (0) | 2023.04.27 |
10819번: 차이를 최대로 / silver 2 / 브루트포스, 순열 (0) | 2023.04.25 |
17413번: 단어 뒤집기 2 / silver 3 / 구현, 스택, 문자열 (0) | 2023.04.24 |
10867번: 중복 빼고 정렬하기 / silver 5 / 정렬 (0) | 2023.04.23 |