728x90
https://www.acmicpc.net/problem/2884
코드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
'알고리즘 문제 풀이' 카테고리의 다른 글
[python] 백준 2920 : 음계 (0) | 2022.01.28 |
---|---|
[python] 백준 2908 : 상수 (0) | 2022.01.27 |
[python] 백준 1152 : 단어의 개수 (0) | 2022.01.23 |
[python] 백준 2577 : 숫자의 개수 (0) | 2022.01.22 |
[python] 알고리즘 문제 풀이에 자주 사용되는 함수 정리(계속 추가됨) (0) | 2022.01.19 |