백준 2884번 알람 시계
문제
알람 시각 H시 M분이 주어진다(0 ≤ H ≤ 23, 0 ≤ M ≤ 59). 이 시각을 45분 앞당긴 시각을 입력과 같은 형태로 출력한다. 24시간제이며 0시 30분의 45분 전은 23시 45분이다.
풀이
시각별로 따져 보면 세 경우로 나뉜다. 7시 45분처럼 분이 45 이상이면 시는 그대로 두고 분에서 45를 뺀다. 7시 30분처럼 분이 45 미만이면 시를 1 줄이고, 분은 m - 45에 60을 더한 값, 즉 m + 15가 된다. 0시 30분처럼 시가 0이면 23시로 넘어간다.
처음에는 분을 60 - (45 - m)로 계산해 식이 복잡했고 일부 입력에서 오류가 났다. 단순히 m + 15로 바꾸자 로직이 정리되었다.
h, m = map(int, input().split())
if m > 44:
print(h, m - 45)
elif h > 0 and m < 45:
print(h - 1, m + 15)
else:
print(23, m + 15)