가고 안가고를 통해 결정된다고 생각 -> 부분집합문제인가? -> DFS로 해보자
하지만 예외처리를 하기 어렵다 -> BFS로 전환
BFS에서 어떻게 부분집합을 결정할 수 있을까 고민
for _ in "Iterable" 을 쓸 생각을 할 수 있냐 없냐가 이 문제의 해결 요소라고 생각한다.
평소에 range()랑 같이 쓰면서 해당 사용법에 대해서 생각치 못한게 이 문제를 자력으로 해결못했었던 요소라고 생각한다.
# 5014 스타트링크 실버 1
from collections import deque
f,s,g,u,d = map(int,input().split())
# 10층 건물로 이루어졌고 현재 1층이고 회사는 10층 한번에 2층 올라가고 1층 내려온다
# print(f,s,g,u,d)
flag = 0
visited = [0] * (f+1)
deq = deque()
deq.append(s)
visited[s] = 1
while deq:
level = deq.popleft()
if level == g:
flag = 1
break
# if visited[level]: continue
for x in [level+u, level-d]:
if 0 < x <= f and visited[x] == 0:
visited[x] = visited[level] +1
deq.append(x)
if flag:
print(visited[g]-1)
else:
print('use the stairs')
'알고리즘 문제풀이' 카테고리의 다른 글
백준 1991 트리 순회 Python 트리 DFS 실버 1 (0) | 2024.03.31 |
---|---|
백준 2606 바이러스 Python BFS 실버3 (0) | 2024.03.31 |
백준 1193 분수 찾기 Python 수학 실버 5 (0) | 2024.03.29 |
백준 1920 수 찾기 Python 이진탐색 실버 4 (0) | 2024.03.29 |
백준 1260 DFS 와 BFS Python 실버 2 (0) | 2024.03.28 |