[파이썬]알고리즘공부

백준 [2884] 알림시계

ziiko 2021. 11. 20. 15:03

문제

상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다.

상근이는 모든 방법을 동원해보았지만, 조금만 더 자려는 마음은 그 어떤 것도 없앨 수가 없었다.

이런 상근이를 불쌍하게 보던, 창영이는 자신이 사용하는 방법을 추천해 주었다.

바로 "45분 일찍 알람 설정하기"이다.

이 방법은 단순하다. 원래 설정되어 있는 알람을 45분 앞서는 시간으로 바꾸는 것이다. 어차피 알람 소리를 들으면, 알람을 끄고 조금 더 잘 것이기 때문이다. 이 방법을 사용하면, 매일 아침 더 잤다는 기분을 느낄 수 있고, 학교도 지각하지 않게 된다.

현재 상근이가 설정한 알람 시각이 주어졌을 때, 창영이의 방법을 사용한다면, 이를 언제로 고쳐야 하는지 구하는 프로그램을 작성하시오.

 

풀이

 

시(h) 와 분(m) 의 입력값을 input 과 split을 이용하여 각 각 입력한다. 

map 을 이용하여 정수형 값으로 변환시켜 준다. 

45분 앞서는 시간으로 바꾸기 위해 표현해야 하는 논리조건은

 

1. 알람을 맞추려고 하는 시간이 45분 보다 늦은 시간일 때

2. 45분보다 이른 시간일때 

3. 45분보다 이른 시간이면서 0시 일 때

 

1. 알람을 맞추려고 하는 시간이 45분보다 늦은 시간일 때

알람을 맞추려고 하는 시간이 45분보다 늦을 때는 그 시간에서 45분을 빼주면 된다. 

알람을 맞추려고 하는 시간의 분(m) 값이 더 크기 때문에 시(h)의 값은 변하지 않는다. 

 

2. 45분보다 이른 시간일 경우 시(h)는 1시간 앞당겨지기 때문에 h-1를 프린트한다. 

예를 들어 입력예제가 10 10 일 경우, 45분 앞당긴 시간은 9시 10분에서의 15분 뒤와 같다. 

 

3. 주어질 예제 값이 0시이면서 45분보다 작으면 23시가 되어야 하기 때문에 이에 대한 논리식도 필요하다.