📜 문제

BOF 2525번, 오븐 시계

🔥난이도🔥

image

1차 풀이 ⭕

시간에 대한 문제로 아래 조건에 대한 처리가 중요하다.

1. ‘분’이 60 이상이 될 경우 시각(시) +1
2. ‘시’가 24 이상이 될 경우 0부터 시작

A, B = map(int, input().split())
C = int(input())

# 요리에 걸리는 시간(분)을 '시'와 '분'으로 계산
C_H = C // 60
C_M = C % 60

# 요리 시작 시각에 더한다. (요리 완성 시각)
cook_H = A + C_H
cook_M = B + C_M

# '분'이 60 이상이면
if cook_M >= 60:
    cook_H = cook_H + 1  # '시' +1
    cook_M = cook_M - 60 # '분' -60

# '시'가 24 이상이면
if cook_H >= 24:
    cook_H = cook_H - 24 # 0부터 시작되도록

print(f'{cook_H} {cook_M}')

image

2차 풀이(개선) ⭕

코드를 좀 더 간결하게 할 수 없을까 생각 중 시작 시각의 ‘분’과 요리에 걸리는 시간(분)을 처음부터 더하면 코드를 줄일 수 있겠다고 생각했다!

A, B = map(int, input().split())
C = int(input())

plus_H = (B + C) // 60 # 요리에 걸리는 시간(시)
cook_H = A + plus_H    # 요리가 끝나는 시각(시)
cook_M = (B + C) % 60  # 요리가 끝나는 시각(분)

# 요리가 끝나는 시각(시)이 24 이상이면 0부터 시작
if cook_H >= 24:
    cook_H = cook_H - 24

print(f'{cook_H} {cook_M}')

image

코드의 길이를 251 Byte에서 187 Byte로 줄일 수 있었다!👍

보충 🤓

시간을 빼야할 경우에는 더할 때와 반대의 처리가 필요하다.

1. ‘분’이 0 미만이 될 경우 시각(시) -1
2. ‘시’가 0 미만이 될 경우 23부터 시작

시간의 계산에는 항상 분에서 시로 바뀌는 부분에 대해서 신경 쓸 필요가 있다.

현재 티어 🥉

image