문제

https://www.acmicpc.net/problem/2884

 

2884번: 알람 시계

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

www.acmicpc.net

기존 시각보다 45분 땡기기. 이게 한줄요약이다.

근데 나도 아침잠 많아서 알람 30분 땡기는데… 스누징 와 사실 그래도 피곤함… ㅋㅋㅋㅋㅋㅋ

 

풀이

일단 전제하고 가야 할 것이 있는데, 시간 계산은 일반적인 10진법이 아니다. 시간은 12진법(그래서 하루가 24시간), 분과 초는 각각 60진법이다. 그래서 10시 30분에서 45분을 빼게 되면

  1. 10:30-0:45
  2. 분이 -15분이 된다
  3. 시간에서 하나 받아내림한다 (시간은 9가 된다)
  4. 받아온 60분을 더하면 45분이 된다

이런 과정을 거치게 된다.

 

h,m=map(int,input().split(" "))
m=m-45
if m < 0: 
    h=h-1
    m=m+60
    print(h,m)
else: 
    print(h,m)

이건 일차적으로 분만 처리한 코드. 저거 그대로 내면 틀린다. 왜냐하면 위 논리대로 분에 대한 계산은 처리했으나, 시간에 대한 계산은 처리하지 않았기 때문에 0시 0분을 입력하게 되면 -1시가 나오게 된다.

 

h,m=map(int,input().split(" "))
m=m-45
if m < 0 and h != 0: 
    h=h-1
    m=m+60
    print(h,m)
elif m < 0 and h == 0: 
    h=h+23
    m=m+60
    print(h,m)
else: 
    print(h,m)

그래서 시간이 0시이면서 분에서 45를 뺐을 때 음수일 때에 대한 처리도 진행해야 한다. (24시간제라 23을 더했다. 0시를 다른 말로 24시라고도 하니까)

'BOJ > [BOJ] Python' 카테고리의 다른 글

백준 8393번 풀이  (0) 2022.08.18
백준 10950번 풀이  (0) 2022.08.18
백준 14681번 풀이  (0) 2022.08.18
백준 2753번 풀이  (0) 2022.08.18
백준 2588번 풀이 및 응용  (0) 2022.08.18

Profile

Lv. 34 라이츄

요즘 날씨 솔직히 에바참치김치꽁치갈치넙치삼치날치기름치준치학꽁치임..