코딩테스트
[백준] 스타트링크 5014 파이썬 에러
_maddy
2024. 4. 7. 01:04
5014번: 스타트링크
첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다.
www.acmicpc.net

<첫번째 코드 - 틀린 코드>
#스타트링크 5014
from collections import deque
f,s,g,u,d=map(int,input().split())
queue=deque()
queue.append(s)
count=0
visited=[0]*(f+1) #방문유무
while queue:
x=queue.popleft()
if x==g:
print(visited[x]) #같으면 멈추고 프린트
break
for i in (x+u,x-d):
if 1<=i<=f:
if visited[i]==0: #방문안했을때만 큐에 집에넣기
queue.append(i)
visited[i]=visited[x]+1 #횟수기록
else:
print('use the stairs')
자꾸 틀리는데 분명 맞는 거 같은데 어디서 틀리는지 몰라서 구글링했는데

여기 조건을 보면 U,D 변수가 0도 가능하다는 것. 즉 0이니까 버튼을 눌러도 이동한게 아닌게 되어서 카운트를 하면 안된다 ㅠㅜ 이 조건을 빼먹어서 틀린 것이었음 ㅠㅜㅠ
<맞은 코드>
#스타트링크 5014
from collections import deque
f,s,g,u,d=map(int,input().split())
queue=deque()
queue.append(s)
count=0
visited=[0]*(f+1)
while queue:
x=queue.popleft()
if x==g:
print(visited[x])
break
for i in (x+u,x-d):
if i==x:#주의!!!! u나 d가 0일 경우 아무것도 안했으니 세면 안됨.
continue
if 1<=i<=f:
if visited[i]==0:
queue.append(i)
visited[i]=visited[x]+1
else:
print('use the stairs')