백준 2525번_파이썬 알고리즘
Q. 백준 2525. 오븐 시계
요리 시작시간과 조리시간(분 단위)을 입력받은 후, 요리가 끝나는 시간을 계산하는 프로그램을 작성한다.
(1) 입력 : 첫째 줄에 요리를 시작하는 시간(현재시간)을 입력받는다.
시간은 시 A와 분 B가 정수로 공백을 사이에 두고 순서대로 주어진다.(0 ≤ A ≤ 23, 0 ≤ B ≤ 59)
둘째 줄에는 조리시간 C (0 ≤ C ≤ 1,000)가 분 단위로 주어진다.
(2) 출력 : 첫째 줄에 종료되는 시각(시, 분)을 공백을 사이에 두고 출력한다.
(시는 0~23까지의 정수, 분은 0~59까지의 정수, 23시59분이 지나면 0시0분으로 리셋)
A. 풀이
- 문제를 제대로 이해하지 못하면 헤맬 수 있는 문제이니, 잘 이해하고 풀이를 시작해야 한다.
# Q 백준 2525, 오븐 시계 ★★★★
h, m = map(int, input().split())
time = int(input())
h_time = time // 60
m_time = time % 60
h += h_time
m += m_time
if m >= 60:
h += 1
m -= 60
if h >= 24:
h -= 24
else:
if h >= 24:
h -= 24
print(h, m)
1) 변수 선언부
- 첫째 줄에 요리 시작시간을 받아야 한다. 공백을 사이에 두고 시간 h와 분 m을 입력받는다. 각 값은 이후의 계산을 위해 정수로 변환해야 하므로, 'map(int, input().split())'을 사용했다.
※ Tip(1) : map(function, iterable)
- 둘째 줄에도 조리시간을 변수 'time'에 받는다. 조리시간은 한가지 값 이므로 간단히 'int(input())'을 사용하여 입력받는다.
- 조리시간 time이 만약 60분이 넘어갈 경우 계산이 쉽도록 시간, 분단위로 나누어 준다. 이를 위해 조리시간 time을 60으로 나눈 몫(h_time)과 time을 60으로 나눈 나머지(m_time)를 생성한다.
※ Tip(2) : 나눗셈의 몫 → // , 나눗셈의 나머지 → %
- 이제 시작시간에서 조리시간을 더한다.
h += h_time
m += m_time
- 여기서 끝이나면 좋겠지만 간과해서는 안될 부분이 있다. 시간은 24시간까지, 분은 60분까지라는 성격 때문에 후처리를 진행해준다.
2) 조건문 if
- 먼저 m이 60분을 넘어갔을 경우, 시간은 1을 더해주고 분은 60을 빼줄 수 있다. 하지만, 여기서도 시간에 1을 더해줬을 경우 24를 넘어간다면 00시부터 리셋해주어야 하기 때문에 시간에서도 24를 빼주어야 한다.
if m >= 60:
h += 1
m -= 60
if h >= 24:
h -= 24
- 마찬가지로 m이 60보다 작을경우에도 시간이 이미 24를 넘어갔을 수 있기 때문에 동일하게 해당하는 경우에는 24를 빼줄 수 있도록 코드를 짜준다.
else:
if h >= 24:
h -= 24
3) 출력
- 종료되는 시각 시, 분을 공백을 사이에 두고 출력하기 위해 아래와 같이 print문을 사용한다.
print(h, m)
R. 리뷰
- 숫자, 시간에 대한 개념을 잘 이해하고 접근한다면 너무 까다롭지는 않은 문제이다.
- if 조건문을 사용하지만 예외의 경우가 없도록 꼼꼼히 처리해주어야 모든 경우에서 정확한 출력을 낼 것이다.
(정 어렵다면 여러가지 케이스를 분류해서 직접 하나하나 출력해보는 것도 단순하지만 방법이다.)
'DEV > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 9498번(파이썬) (0) | 2022.09.18 |
---|---|
백준 알고리즘 15552번(파이썬) (1) | 2022.09.17 |
백준 알고리즘 10171번, 25083번(파이썬) (0) | 2022.09.15 |
백준 알고리즘 2438번, 2439번(파이썬) (0) | 2022.09.14 |
백준 알고리즘 8393번(파이썬) (0) | 2022.09.13 |
댓글