Baekjoon 문제 풀기 (2884번 : 알람 시계)Python

2884번 : 알람 시계

1. 문제읽기


시계 문제

예전에 브론즈4에서 풀었던 오븐 시계와 비슷한 문제이다.
일단 m이 45분 이상일 때와 45분 미만일 때 두가지의 경우를 나누어 생각하였다.
45분 이상일 때는 그냥 45분을 빼줌으로서 간단히 끝났지만,
45분 미만일 때가 문제였다.
h의 값을 1 빼주어야 하는데, h의 값이 0일때 1을 빼면 23이 나와야 하는 경우가 제일 곤란했다.
이 때, 오븐 시계 문제를 풀었던게 도움이 되었다.
나눗셈 연산자를 이용하여, -1%24의 값이 23이라는 것을 생각했다.
그런데, 알고보니 음수의 나머지 값이 무조건 양수와 똑같이 동작하지는 않기 때문에 좋지 않은 코드였다.

print(3%7)  # 3
print(-3%7)  # 4

2. 제출 코드


h, m = map(int, input().split())

t = 45
if m >= t:
    m = m - t
    print(h, m)
else:
    m = m + 15
    h = (h-1)%24
    print(h, m)

3. 공부할 것


다른 코드를 보니 세가지 경우로 나누어 푸는 것이 정석인듯 하다.
h의 값이 0에서 23이 되는 경우를 아예 빼서 코드를 작성하였다.

h, m = map(int, input().split())

t = 45
if m >= t:
    print(h, m-45)
elif m < t and h >= 1:
    print(h-1, m+15)
else:
    print(23, m+15)

댓글남기기