[백준/Python] 2530 - 인공지능 시계

orangesnail·2025년 2월 25일

백준

목록 보기
40/169

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}")

때로는 단순하게 생각하는 것이 답이다!
올해 여름까지 파이썬 진짜 열심히 연습해야지.

profile
초보입니다. 피드백 환영합니다 😗

0개의 댓글