우당탕탕 파이썬 with 하루하나 알고리즘

백준 2525 파이썬 - if문을 활용해 일정 시간이 지난 시각 확인하기

hyxndy 2022. 3. 17. 10:34

백준 2525번 - 오븐 시계 with python

Q. KOI 전자에서는 건강에 좋고 맛있는 훈제오리구이 요리를 간편하게 만드는 인공지능 오븐을 개발하려고 한다. 인공지능 오븐을 사용하는 방법은 적당한 양의 오리 훈제 재료를 인공지능 오븐에 넣으면 된다. 그러면 인공지능 오븐은 오븐구이가 끝나는 시간을 분 단위로 자동적으로 계산한다. 또한, KOI 전자의 인공지능 오븐 앞면에는 사용자에게 훈제오리구이 요리가 끝나는 시각을 알려 주는 디지털 시계가 있다. 

훈제오리구이를 시작하는 시각과 오븐구이를 하는 데 필요한 시간이 분단위로 주어졌을 때, 오븐구이가 끝나는 시각을 계산하는 프로그램을 작성하시오.

 

첫째 줄에는 현재 시각이 나온다. 현재 시각은 시 A (0 ≤ A ≤ 23) 와 분 B (0 ≤ B ≤ 59)가 정수로 빈칸을 사이에 두고 순서대로 주어진다. 두 번째 줄에는 요리하는 데 필요한 시간 C (0 ≤ C ≤ 1,000)가 분 단위로 주어진다. 


처음에 문제를 풀었을 때 생각해주어야 할 조건들이 많은 것 같아 일단 if문을 여러 개 중첩하여 문제를 풀었다.

하지만 틀렸습니다.. 틀렸습니다.. 틀렸습니다... 틀림의 연속이었다.

그래서 내가 하는 방법이 잘못됨을 깨닫고 구글링을 통해 문제를 풀었다..!!! 또한, 지난 문제도 생각보다 복잡하게 풀었다는 것을 알 수 있었다.

 

먼저 A와 B는 현재 시각을 나타내고, C는 요리하는 데 필요한 시간이 분 단위로 주어진다.

C는 몇시간이 걸려도 분단위로 나타내기 때문에 생각보다 큰 숫자가 나올 수도 있다. 

 

예를 들어, 요리하는 데 필요한 시간, C = 720분이라고 생각을 해보자.

이것을 h시 mm분 꼴로 바꿔보면 12시간 00분이다.

어떻게 12시간이라는 값이 나왔을까?

1시간은 60분이기 때문에 720/60=12시간이라는 것을 알 수 있다.

C에서 시를 나타내는 것은 C를 60으로 나눴을 때 몫이다.

 

그럼 C = 425분이라 해보자.

425분은 총 7시간 5분이다.

60*7 + 5 = 42이기 때문이다.

7시간이 나온 것은 425를 60으로 나눴을 때 몫이 7이기 때문에 7시간이라는 것을 알 수 있었고,

5분은 425를 7로 나누었을 때 나머지가 5이기 때문에 총 7시간 5분임을 확인할 수 있었다.

즉, 분을 나타내는 것은 C를 60으로 나누었을 때 나머지이다.

 

이를 토대로 코드를 작성해보면

A, B = map(int, input().split())
C = int(input())

A += C//60
B += C%60

임을 알 수 있다.

여기서 A += C//60은  A = A + C//60임이 알려져있다.

 

이렇게 정리를 해두면, 문제 상황이 두 가지 발생할 수 있다.

B가 60보다 클 때와 A가 24보다 클 때 다시 식을 조정해주어야 한다.

 

이는 간단하다. B가 60보다 클 때에는 A에 1시간을 더 추가해주고, B에서 60분을 빼주면 된다.

A가 24보다 클 때에는 A에 24를 빼주면 된다.

 

이 역시 식으로 정리하면

if (B > 60):
	A+=1
    B-=60

if(A >= 24):
	A-=24

 

위의 코드와 아래 코드를 합쳐주고 print함수를 통해 A와 B를 출력해주면 완성이다.

<코드>

A, B = map(int, input().split())
C = int(input())

A += C//60
B += C%60

if B >=60:
    A+=1
    B-=60

if A >= 24:
    A-=24
    
print(A, B)