본문 바로가기

공부하는 것들/알고리즘

백준 2525 : 오븐 시계

www.acmicpc.net/problem/2525

 

2525번: 오븐 시계

첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.)

www.acmicpc.net

단순한 시간 계산 문제인데, 분이 시간으로 넘어갈 때, 시간이 24시를 넘어갈 때 자릿수가 올림 되는 걸 두 번 고려해줘야 한다.

if __name__=='__main__':
    hour, minute = list(map(int,input().split()))
    time = int(input())
    spent_hour = time//60
    spent_minute = time%60
    ans =[(hour+spent_hour+(minute+spent_minute)//60)%24, (minute+spent_minute)%60]
    for i in range(2):
        print(ans[i], end =' ')

 

1. 원래의 시간 셋팅 (hour, minute)

2. 걸리는 시간을 시간, 분으로 나타낸다(spent_hour, spent_minute)

3. 각자의 자리에서 더하고, 분은 60이 넘어가면 자리를 올려준다( //60, %60) 

4. 24시를 넘어갔을 경우, 시간을 리셋한다. (%24)

 

 

 

--- 시행 착오----

걸리는 시간을 분으로 주니, 바로 60 mod 하려고 하였으나, 틀림.

이유: 분을 계산하는 데는 문제가 없지만, 주어진 시간(분) 중 몇 분을 minute에 배분한 채로 시간으로 자리 올림 해야하는 지를 고려하지 않음.

## 반례: 현재 2시 15분이고, time =45분일 경우, 

## 분이 60분이 되면서 3시로 자리 올림이 되어야 하지만, 45//60 = 0 이므로, 시간으로 올림이 안됨.

if __name__=='__main__':
    hour, minute = list(map(int,input().split()))
    time = int(input())
    ans =[(hour+time//60)%24, (minute+time)%60]
    for i in range(2):
        print(ans[i], end =' ')   


    

'공부하는 것들 > 알고리즘' 카테고리의 다른 글

백준 2588 : 곱셈  (0) 2021.02.20
백준 2530 : 인공지능 시계  (0) 2021.02.20
백준 2420 : 사파리월드  (0) 2021.02.20
백준 10430 : 나머지  (0) 2021.02.19
백준 8393: 합  (0) 2021.02.19