백준 2884번, 2525번을 토대로 시간 관련 유형을 간단하게 정리해보고자 한다.
백준 2884번
let input = require('fs').readFileSync('/dev/stdin').toString().split(' ')
let [H, M] = input.map(Number)
M = M - 45
if (M < 0) {
M = M + 60
H = H - 1
if (H < 0) H = 23
}
console.log(H, M)
백준 2525번
let input = require('fs').readFileSync('/dev/stdin').toString().split('\n')
let A = Number(input[0].split(' ')[0])
let B = Number(input[0].split(' ')[1])
let C = Number(input[1])
let b = (B + C) % 60
let a = A + Math.floor((B + C) / 60)
if (a >= 24) a -= 24
console.log(a, b)
시간 관련 유형에서는,
분, 시간 순서로 사고한다. 분 값이 시간 값에 영향을 끼칠 수 있기 때문이다.
먼저 분 값을 구할 때는 60을 기준으로 사고한다.
예를 들어 60보다 크다거나, 60으로 나눈거나와 같이.
다음으로 시간 값을 구할 때는 0과 24를 기준으로 사고한다.
시간 값이 감소하는 상황에서는 0을, 시간 값이 증가하는 상황에서는 24를 기준으로 사고한다.
이때 60, 0, 24는 상황에 따른 분 값과 시간 값을 구하기 위한 적절한 분기를 결정하는 기준이 된다.
💫 이 문제를 통해 배운 것
시간 관련 유형은 분, 시간 순서로 사고하고 분은 60을 기준으로, 시간은 0과 24를 기준으로 하여 분기를 결정한다.