https://www.acmicpc.net/problem/2884
t = input().split(' ')
h = int(t[0])
m = int(t[1])
if (m < 45 and h == 0):
h = h + 23
m = m + 15
elif (m < 45):
h = h - 1
m = m + 15
else:
m = m - 45
print(h, m)
생각보다 시간이 걸렸던 문제였다. 파이썬 문법들을 까먹어서 다시 배워하고 알아가는 단계이다.
먼저 입력을 한번에 받았기 때문에 , 공백을 주어서 한꺼번에 받았는데, 이때는 int타입이 아니라string 타입 배열로 들어간다. 그렇기 때문에 따로 배열에서 뽑아내주면서 정수형으로 형변환을 해줘야한다.
문제가 되는 조건들을 생각해보았다.
1. 시간이 0이면서, 분이 45분보다 작을 경우
2. 분이 45보다 작을 경우
나머지는의 경우는 시간이 0이 아니면서 분이 45보다 작지 않은 경우다보니 else문으로 처리해주었다.
H, M = map(int, input().split())
if M < 45 : # 분단위가 45분보다 작을 때
if H == 0 : # 0 시이면
H = 23
M += 60
else : # 0시가 아니면 (0시보다 크면)
H -= 1
M += 60
print(H, M-45)
이렇게 간단하게 로직을 짜도 되었을텐데 너무 깊게 생각했나 싶었다.
가장 큰 조건으로 분이 45분보다 작을때부터 시작해서 만약 이때 시간이 0이라면 조건을 걸어주는게 보기쉬운 로직이 아니었을까 싶다!