728x90
반응형

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

 

2884번: 알람 시계

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

www.acmicpc.net

2884번 문제

h = 23
m = 59
o = 0
H = None
M = None
while True:
    
        H , M = map(int, input(f"알람 시계를 맞추기 위해 시간은 {o}부터 {h}까지 분은 {o}부터 {m}까지 입력하세요.\n").split())
        
        
        if (H > h): 
            print('시간 범위를 다시 입력하세요')
            if(M>m):
                print('분의 범위를 다시 입력하세요')
            continue
            
        if(M>m):
            print('분의 범위를 다시 입력하세요')
            continue

        break

print(H, M)

Terminal

시간 범위 지정 해보았다.

 

이제 알람시계 문제를 풀 차례!!

 

if문을 활용하여 풀어 보았다!

 

첫 if문은 시간이 자정을 넘긴 시간이고, 분이 45분 이전이라면 시간이 0시에서 23시로 바뀌게 된다!!

그 점을 이해하며 진행하였다.

 

0시에서 23시로 넘어가는 경우를 제외하면 분이 45분 이전이라면 시간은 1시간씩 줄어드므로 다음 else문에서 이를 구현하였다.

M의 변수의 경우 우리가 시간을 계산할때 현재 시간이 5시 35분이라 하자.

그럼 45분 전의 시간을 계산할때 60분  - (45분 - '현재 분') 으로 계산할시 우리가 원하는 값 얻을 수 있게된다.

 

분이 45분이상이라면 그냥 시간도 그대로고 분도 현재시간 - 45분 하면 되므로 쉽게 구할 수 있게된다.

H , M = map(int, input().split())


if H == 0:
    if M<45:
        H = 23
        M = 60- (45-M)
    else  :
        M = M-45
else : 
    if M<45 : 
        H -=1
        M = 60- (45-M)
    else  :
        M = M-45



print(H  , M)

 

728x90
반응형

+ Recent posts