본문 바로가기

알고리즘, 자료구조

[백준| 단계별로 풀어보기 2단계 | Python] 2884번 알람 시계

1. 문제목적

현재 설정된 알람 시간에서 45분 일찍 알람이 울리도록 시간을 조정하는 문제입니다. 이 문제는 조건문뿐만 아니라 시간에 대한 계산을 어떻게 처리하는지에 대해 이해할 수 있는 좋은 기회를 제공합니다.

2. 필요개념

시간 계산

시간과 분을 다룰 때는 60진법을 사용해야 합니다. 특히, 분에서 어떤 계산을 할 때 60을 넘어가거나 0 미만으로 내려가는 경우를 올바르게 처리해야 합니다.

조건문

이 문제에서는 조건문을 사용하여 45분을 빼는 과정에서 시간이 변경되어야 하는 경우(즉, 분이 0 미만이 될 경우)를 처리합니다.

입력 받기

input() 함수로 시간(H)과 분(M)을 입력받고, int() 함수를 사용하여 정수로 변환합니다.

문제 해결 절차

  1. 시간(H)과 분(M)을 입력 받습니다.
  2. 분(M)에서 45를 뺍니다.
    • 만약 결과가 0 미만이면, 시간(H)에서 1을 빼고, 분(M)에 60을 더합니다.
    • 시간(H)이 0 미만이 되면, 23시로 설정합니다.
  3. 조정된 시간(H)과 분(M)을 출력합니다.

3. 코드작성

# 시간과 분 입력받기
H, M = map(int, input().split())

# 분에서 45 빼기
M -= 45

# 분이 0 미만이면 시간 조정
if M < 0:
    M += 60
    H -= 1
    if H < 0:
        H = 23

# 결과 출력
print(H, M)

이 코드는 주어진 시간에서 45분을 빼는 로직을 구현합니다. 분이 0 미만이 될 경우 시간을 조정하며, 시간이 0 미만이 될 경우 하루의 마지막 시간으로 롤오버하는 로직을 포함합니다. 이 문제를 통해 시간 계산 방법과 조건문을 사용하는 방법을 연습할 수 있습니다.

4. 마무리

진수를 나타내고자 할때 진수만큼 더해주어서 간단히 표현할 수 있다는 것을 알았다.

5. 문제링크

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