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++를 통해 미리 코딩을 해본 문제라 큰 문제없이 예외처리하며 풀었지만, 자신이 생각하는 알고리즘의 허점을 발견하는 예외처리는 항상 생각해주어야 합니다.
'프로그래밍 > 코딩 테스트 연습' 카테고리의 다른 글
[백준] 2739번 : 구구단 (3단계) (Python) (0) | 2024.02.23 |
---|---|
[백준] 2480번 : 주사위 세개 (2단계) (Python) (0) | 2024.02.21 |
[백준] 2884번 : 알람 시계 (2단계) (Python) (0) | 2024.02.21 |
[백준] 14681번 : 사분면 고르기 (2단계) (Python) (0) | 2024.02.21 |
[백준] 2753번 : 윤년 (2단계) (Python) (0) | 2024.02.21 |