본문 바로가기
DEV/백준 알고리즘

백준 알고리즘 2525번(파이썬)

by 올커 2022. 9. 16.

 

 

백준 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 조건문을 사용하지만 예외의 경우가 없도록 꼼꼼히 처리해주어야 모든 경우에서 정확한 출력을 낼 것이다.

   (정 어렵다면 여러가지 케이스를 분류해서 직접 하나하나 출력해보는 것도 단순하지만 방법이다.)

 

 

 

반응형

댓글