[백준 파이썬] 2884.알람 시계

Mijeong Kwon·2025년 8월 9일
0

알고리즘

목록 보기
2/3

[Bronze III] 알람 시계 - 2884

문제 링크

문제 설명

문제

제출 코드

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

if H != 0 and M < 45:
	print(H-1, M+15) # M-45+60
elif H != 0 and M >= 45:
	print(H, M-45)
elif H == 0 and M < 45:
	print(23, M+15)
elif H == 0 and M >= 45:
	print(0, M-45)
  • H와 M은 정수형이고, 공백 기준으로 나눠 입력받는다.
  • H(시간)이 0인 경우와 아닌 경우, M(분)이 45 이상인 경우와 미만인 경우로 나눠 조건문 4개로 작성했다.

다른 코드 1

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

if M < 45:
    M += 15
    if H == 0:
        print(23, M)
    else:
        print(H-1, M)
else:
    print(H, M-45)

처음 제출한 코드가 겹치는 부분이 많은 것 같아서, 조건문을 깔끔하게 바꾼 버전도 제출해봤는데 잘 동작했다.

다른 코드 2

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

M -= 45  
if M < 0:  
    M += 60
    H -= 1
    if H < 0:
        H = 23

print(H, M)
  • 조금 더 깔끔하게는, 일단 45분을 빼준다.
    - 15를 더해줬던 앞의 코드보다 직관적이다!
  • 이때, 분이 음수가 되면 60을 더하고 1시간을 빼준다. 분이 양수면 H는 입력값 그대로다.
  • 만약 H가 음수가 되면(H가 0이었을 경우 해당), H는 23이 되게 한다.
profile
$ git commit -m "feat: add today's 성장 로그"

3개의 댓글

comment-user-thumbnail
2025년 8월 9일

오오 그나저나 자기소개가 쫌 간지네요

1개의 답글
comment-user-thumbnail
2025년 8월 10일

잘 읽었습니다. 꾸준하게 풀어보아요~

답글 달기