알고리즘 공부 2일차 / 백준 단계별문제/if문/ 파이썬 백준 2884 알람시계

suhyeon chae·2021년 11월 25일
0

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

상근이는 모든 방법을 동원해보았지만, 조금만 더 자려는 마음은 그 어떤 것도 없앨 수가 없었다. 이런 상근이를 불쌍하게 보던, 창영이는 자신이 사용하는 방법을 추천해 주었다.

바로 "45분 일찍 알람 설정하기" 이다. 이 방법은 단순하다.

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

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

H,M = map(int, input().split())
if (M-45 < 0):
    M = (60+(M-45))
    if (H == 0):
        H = 24
    H = H-1
else:
    M = (M-45)
print(H, M)

풀고나서 다른분들 풀이보니 알고리즘 초보자인 나는 비교적 코드가 좀 복잡해보인다.
하지만 나름 직관적으로 푼 것 같다.

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

먼저 H,M 을 입력 받는다.

H,M = input().split() : 입력되는 문자를 input()함수로 입력받고 split()함수로 나누어 각각 H,M 변수에 저장


분은 60분이 기준 이고, 30분 같은 경우 45분을 빼게되면 -15분이 나온다. 하지만 -15분이라는 시간은 존재하지 않는다. 그리고 값 조차 틀렸다.

if문을 사용해

if (M-45 < 0):   # 만약 입력받은 M-45 했을 때 음수가 나온다면 (M-45 :음수)
	M = (60+(M-45))   # 60 + (M-45)   60분에서 M-45값을 빼준다. M-45값이 음수이므로 60 + (M-45)가됨

그리고 시간도 1시간 줄어야 하기 때문에 H = H-1 해준다. 그 전에, 0시는 24로 해야하기 때문에 빼주기 전에 H가 0인지 비교를 해줘야한다.
    if (H == 0):
        H = 24    # H가 0이면 H = 24로 해라 
    H = H-1    # 그 다음에  1시간을 빼준다. 0이면 45분을 뺐을 때 23시로 표시되도록

그리고 만약에 50분에서 45분 뺐을 때는 H(시)의 변화는 없어야한다 . 그냥 그대로 45분만 빼주면 된다.
   else:
    M = (M-45)

그러고 나서 H,M을 출력해주면 된다.


다시 전체 코드
H,M = map(int, input().split())     # 입력되는 문자를 각각 H,M 변수에 저장
if (M-45 < 0):                      # 만약 입력받은 M-45 했을 때 음수가 나온다면 (M-45 :음수)
    M = (60+(M-45))                 # 60 + (M-45)   60분에서 M-45값을 빼준다. M-45값이 음수이므로 60 + (M-45)가됨
    if (H == 0):                    # H가 0이면 H = 24로 해라 
        H = 24
    H = H-1                         # 그 다음에  1시간을 빼준다.  (여기까지는 모두 M-45<0 인 경우)
else:                               # M-45>=0 인 경우 시간은 고정, 분만 45분 빼주면 됨
    M = (M-45)
print(H, M)
profile
예비 클라우드 & 백엔드 개발자 !

0개의 댓글