프로그래밍/코딩 테스트 연습

[백준] 2525번 : 오븐 시계 (2단계) (Python)

w_w 2024. 2. 21. 21:29
 

2525번: 오븐 시계

첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.)

www.acmicpc.net

 


 

문제

 

 

 

 


 

 

해석

 

https://whitecode2718.tistory.com/61

 

[백준] 2884번 : 알람 시계 (2단계) (C++)

https://www.acmicpc.net/problem/2884 2884번: 알람 시계 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있

whitecode2718.tistory.com

 

 

알람 시계 문제에서 시간을 받는 범위가 늘어나고 빼는 게 아닌 더해지는 시간이 된 것뿐입니다. 

 

만약 이 문제를 입력받는 데이터에 따라 시간을 더한다면 조건은 매우 복잡해질 겁니다. (더해진 분이 60의 배수만큼 시간을 더하면서 이때 시간이 24시인지를 생각해야 할 겁니다.)

 

때문에 이 문제도 입력받는 시간을 분단위로 전부 바꾼 후 분단위로 더하고 60을 나눈 몫과 나머지로 출력할 시간과 분으로 분리하면 됩니다.

 

 

 

풀이

 

 

 

a,b = map(int,input().split())
c = int(input())

if a==0:
    a=24

min = a*60 + b + c
hour = min // 60
min_result = min % 60

if hour >= 24:
    hour -= 24

print(hour,min_result)

 

 

제가 생각한 알고리즘으로 풀 때의 핵심은 예외처리입니다. 예외조건은 a가 0으로 입력받았을 때 24로 고쳐야 한다는 점과 반환되는 hour값이 24 이상일 때 24를 빼주어 정확한 시간을 입력해야 한다는 것입니다.

 

 


 

정리

 

 

이전에 C++를 통해 미리 코딩을 해본 문제라 큰 문제없이 예외처리하며 풀었지만, 자신이 생각하는 알고리즘의 허점을 발견하는 예외처리는 항상 생각해주어야 합니다.