[python] 백준 2884 : 알람시계

728x90

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

 

2884번: 알람 시계

상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만,

www.acmicpc.net

 

코드1

h, m = map(int, input().split())
if m < 45:
    h -= 1
    if h < 0:
        h = 23
    m = 60-45+m
else :
    m -= 45
print(h, m)

입력한 시간보다 45분 빠른 값을 출력해야 한다.

 

입력한 시간이 45분보다 작으면 한시간을 빼고 m+=15를 해주면 원하는 값을 출력할 수 있다.

m이 30이라고 가정하자. 30만큼 빼면 h값이 1 감소할 것이고, 다시 60-15를 한 45가 m의 값이 될 것이다.

m이 20이라고 가정하자. 20만큼 빼면 h값이 1 감소할 것이고, 다시 60-25를 한 35가 m의 값이 될 것이다.

 

결론적으로 m = m + 15의 값으로, h는 1감소하는 것으로 시간을 맞출 수 있다.

만약 입력한 시간이 1시간 보다 작을 경우 23시로 맞춰서 출력할 수 있도록 해주었다.

 

코드2

import sys
hour, min = map(int, sys.stdin.readline().split())
min_sum = hour*60 + min - 45
if min_sum < 0:
  min_sum = 1440 + min_sum
print(f'{min_sum // 60} {min_sum % 60}')

그냥 입력받은 시간을 분 단위로 바꾸어주고 45분을 뺐다.

그 값이 0보다 작은 경우는 24시를 기준으로 뺄셈을 해주어야하기 때문에

1440(24시를 분으로 나타냄) + min_sum으로 그 값을 계산했다.(if문 분기 조건에 따라 min_sum은 음수이므로 뺄샘처리가 된다.)

728x90