728x90
✅ 문제 링크
아래 링크를 통해 문제 페이지로 이동할 수 있습니다.
✅ 문제 설명
728x90
✅ 문제 풀이
문제를 해결하기 위해 두 가지 큰 경우로 나누어 생각하면 쉽습니다.
Case 1: 분(M)이 45분 이상일 경우 (간단한 경우)
이때는 시(H)가 바뀔 일이 없습니다. 단순히 분(M)에서 45를 빼주기만 하면 됩니다.
- 예: 10시 50분 → 10시 (50 - 45)분 → 10시 5분
Case 2: 분(M)이 45분 미만일 경우 (복잡한 경우)
이 경우, 분(M)에서 45를 빼면 음수가 되므로 '시(H)'에서 1시간(60분)을 빌려와야 합니다.
- 시(H) 처리: 시(H)는 1시간 줄어듭니다.
- 분(M) 처리: 분(M)에는 60분을 더한 뒤, 45분을 뺍니다. 즉, M + 60 - 45 가 새로운 분이 됩니다.
- 예: 10시 30분 → (10 - 1)시 (30 + 60 - 45)분 → 9시 45분
⚠️ 여기서 중요한 경계값(Edge Case)!
만약 시(H)가 0시일 때 1시간을 빼면 어떻게 될까요? 0시에서 1시간 전은 -1시가 아니라 23시입니다.
이 예외 상황을 처리해주는 if문이 추가로 필요합니다.
✅ 정답 코드
# 시(H)와 분(M)을 한 줄에 입력받아 정수로 변환합니다.
H, M = map(int, input().split())
# M이 45분 이상인지 미만인지에 따라 분기합니다.
if M >= 45:
# Case 1: 45분 이상이면 분(M)만 빼줍니다.
M = M - 45
else:
# Case 2: 45분 미만이면 시(H)에서 1시간을 빌려옵니다.
H = H - 1
M = M + 60 - 45
# 경계값 처리: H가 음수가 되면 23시로 바꿔줍니다.
if H < 0:
H = 23
# 결과를 출력합니다.
print(H, M)
728x90
'단계별로 풀어보기 : 백준 > 조건문' 카테고리의 다른 글
[백준] 2480번 주사위 세개 - Python(파이썬) (0) | 2025.07.11 |
---|---|
[백준] 2525번 오븐 시계 - Python(파이썬) (1) | 2025.07.10 |
[백준] 2753번 윤년 - Python(파이썬) (0) | 2025.07.09 |
[백준] 14681번 사분면 고르기 - Python(파이썬) (0) | 2025.07.09 |
[백준] 1330번 두 수 비교하기 - Python(파이썬) (2) | 2025.07.08 |