본문 바로가기
알고리즘/백준-Python

[Python] 백준 1173번 : 운동

by sweesweet 2021. 11. 23.

https://www.acmicpc.net/problem/1173

N,m,M,T,R=map(int,input().split())
x=m
nn=0
count=0
while True:
    if x+T<=M:
        x=x+T
        nn+=1
        count+=1
    elif x+T>M:
        x=x-R
        count+=1
        if count==1:#유의해야함~!!
            print(-1)
            break
        if x<m:
            x=m

    if N==nn:
        print(count)
        break

여기서 유의해야할 점은 바로 처음부터 'm+T가 M보다 커졌을 때'다.

코드는 잘 짰는데 예제값을 입력했더니 무한 루프가 돌아간다? 위의 점을 빼먹었을 확률이 높다.

나 또한 그래서 구글에 쳐보니 m+T가 M보다 커졌을 때는 애초에 운동을 할 수 없기 때문에 여기서 브레이크를 걸어줘야 한다고 했다. 내코드를 고치기엔 풀어가는 방향이 달라서 x+T>M 이고 count가 1이 될 때(정상적으로 돌아간다면 무조건 처음 if절인 x+T<=M을 먼저 하기 때문에 elif절에서 count가 1이 될 수 없다.) break를 걸었다.

 

%오늘도 생각한다 코딩은 참... 이곳저곳 방향을 달리봐야 하는구나.. 예제가 주어진다고 해도 경우를 잘 생각해서 조건을 넣어야 한다는 점을 또 깨닫는다. 

 

'알고리즘 > 백준-Python' 카테고리의 다른 글

[Python]백준 7567번:그릇  (0) 2021.11.25
[Python]백준 3052번: 나머지  (0) 2021.11.24
[Python]백준 1159번 : 농구경기  (0) 2021.11.23
[Python]백준 1075번:나누기  (0) 2021.11.22
[Python]백준 5622 다이얼  (0) 2021.11.22