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

파이썬을 오랜만에 했더니 정말 다 까먹었다.......
hour, minutes, sec = map(int, input().split())
d = int(input())
if d < 60: # d가 1분 미만인 경우 - 초 단위만 더하기
if sec + d >= 60:
sec += d
elif d % 60 < 60: # d가 1분 이상 1시간 미만인 경우 - 분 단위만 더하기
if sec +
else: # d가 1시간 이상인 경우 - 시, 분 나눠서 더하기
print(f"{hour} {minutes} {sec}")
위처럼 코드를 짜놓고 첫번째 if문 안에서
"d가 1분 미만이면 한 30초라고 쳐. 그럼 시작 시각의 초 부분에 더하면 되겠네. 근데 더했더니 시간이 59초를 넘으면? 근데 그렇게 넘은 시간을 분으로 환산해서 시작 시각의 분에 더했는데 59분이 넘으면? 이 많은 경우의 수를 도대체 어떻게 코드로 효율적으로 짤 수 있는거지...?"
라는 생각을 했었다..
거기서부터 완전히 막혀버렸다. ㅠㅠㅠㅠㅠㅠ
내 코드의 문제점: 조건을 너무 세분화해서 나눴더니 다 꼬여버렸다.
단순하게 생각하면 되는 거였다.
그냥 주어진 초에다가 걸리는 시간(초단위)를 더해버린다. 그 다음 차근차근 시간 계산(반올림)을 해주면 된다!
sec += d
초 먼저 더하기
minutes += (sec // 60)
sec %= 60
hour += (minutes // 60)
minutes %= 60
시간 반올림
hour %= 24
이걸 까먹을 뻔 했다. 24시 이상이 되면 00부터 다시 시작하기 때문에 hour에 hour를 24로 나눈 나머지를 저장해줘야 한다!
hour, minutes, sec = map(int, input().split())
d = int(input())
sec += d
minutes += (sec // 60)
sec %= 60
hour += (minutes // 60)
minutes %= 60
hour %= 24
print(f"{hour} {minutes} {sec}")
때로는 단순하게 생각하는 것이 답이다!
올해 여름까지 파이썬 진짜 열심히 연습해야지.