이 문제에서 중요하게 생각해야할 조건 2 가지를 정해 보았다.
먼저, 상근이가 일어나야 하는 시간을 H시 M분으로 하였을때
(0 <= H <= 24, 0 <= M <= 59)
Conditon 1 일때, H는 1만큼 빼 주고, M은 60 - (45 - M)이라는 식으로 일반화 해주었다. 더 간단하게는 60 - (45 - M) = 15 + M 으로 표현할 수 있다.
if (M < 45):
print(H - 1, M + 15)
Conditon 2 일때, H는 0시(새벽 12시) 이전인 23시로 바꿔주고, M은 Condtion 1과 똑같이 M + 15로 만들어주었다.
if (H == 0 and M < 45):
print(23, M + 15)
Condition 1과 2 그리고 가장 일반적인 조건인 M이 45보다 큰 경우 모두 나열해 보면 다음과 같은 코드를 짤 수 있다.
H, M = map(int, input().split( ))
if (M >= 45):
print(H, M - 45)
elif (M < 45):
print(H - 1, M + 15) # M = 60 - (45 - M) = 15 + M
elif (H == 0 and M < 45):
print(23, M + 15)
다음 코드를 실행해 보면 한 가지 문제가 생긴다. 바로, H가 0인 경우 Condition 2 조건이 실행되지 않고, Condition 1조건으로 넘어가 버리는 것이다. 즉, H가 23이 아닌, -1 M+15 로 출력되어버린다.
이를 해결하기 위해 Condition 1의 조건에 H!=0조건을 하나 더 추가해 주었다.
최종 수정한 코드는 아래와 같다
H, M = map(int, input().split( ))
if (M >= 45):
print(H, M - 45)
elif (H !=0 and M < 45):
print(H - 1, M + 15) # M = 60 - (45 - M) = 15 + M
elif (H == 0 and M < 45):
print(23, M + 15)