less than 1 minute read

2884번 조건문을 활용한 알람시계 문제

첫째 줄에 두 정수 H와 M이 주어진다. (0 ≤ H ≤ 23, 0 ≤ M ≤ 59) 그리고 이것은 현재 상근이가 설정한 놓은 알람 시간 H시 M분을 의미한다. 입력 시간은 24시간 표현을 사용한다. 24시간 표현에서 하루의 시작은 0:0(자정)이고, 끝은 23:59(다음날 자정 1분 전)이다. 시간을 나타낼 때, 불필요한 0은 사용하지 않는다. Input) 10 10 Output) 9 25

문제-1

1 40을 입력할 경우 정상값인 0 55가 아닌 0 10이라는 잘못된 출력이 나왔다.

문제해결-1

가장 바깥쪽의 시간(h)을 비교하는 if문에서 h가 0일 때의 조건문이 elif가 아니라 if로 돌아가고 있어 오류가 발생하였다. h가 0으로 바뀔 시점에 두번째 if문도 같이 빠지게 되니 잘못된 출력이 발생하였다. elif로 수정히니 정상적으로 작동하였다.

문제-2

분(m)이 45분일 경우 45분을 빼면 0분인데, 0분일 때의 경우를 생각하지 못했다.

문제해결-2

m에서 45를 뺴서 0이면 0분 그대로 두도록 수정하였다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
h,m = map(int, input().split())
if h>0:
    if m-45 < 0:
        h=h-1
        m=m+15
    elif m-45 == 0:
        m=0
    else:
        m=m-45
elif h==0:
    if m-45 < 0:
        h=23
        m=m+15
    elif m-45 == 0:
        m=0
    else:
        m=m-45
print(h,m)