출처: 백준 2884번 알람 시계
주어진 시간을 45분 앞서서 출력하라.
10 10 -> 9 25
접근 : 주어진 hour과 min을 상황에 따라 증감시키기
const readline=require('readline');
const rl=readline.createInterface({
input:process.stdin,
output:process.stdout
});
let input=[];
rl.on('line',function(line){
input=line.trim().split(' ').map(Number);
}).on('close',function(){
let [hour,min]=input;
if(min<45){
min=min+15;
hour!==0?hour--:hour=23;
console.log(`${hour} ${min}`)
}else{
console.log(`${hour} ${min-45}`)
}
process.exit();
})
접근 : 주어진 min에 먼저 45를 빼주고 0과 비교하여 추가로 hour와 min을 증감시키기
const fs=require('fs');
let [hour,min]=fs.readFileSync('/dev/stdin').toString().trim().split(' ').map(Number);
min-=45;
if(min<0){
min+=60;
hour--;
if(hour===-1){
hour=23;
}
}
console.log(`${hour} ${min}`)
접근 : 주어진 hour와 min을 그대로 사용하는 것이 아니라 분단위로 통일시켜 계산하기
const fs=require('fs');
const [hour,min]=fs.readFileSync('/dev/stdin').toString().trim().split(' ').map(Number);
const alarm=hour*60+min-45;
console.log(alarm<0?`23 ${alarm+60}`:`${Math.floor(alarm/60)} ${alarm%60}`)
셋 중 마지막 풀이가 가장 빨랐다.
시간을 다루는 문제 뿐만 아니라 거리, 무게 등과 관련된 문제가 나오면, 하나의 단위로 통일 시켜주고 계산하는 방법도 있음을 기억하자.
https://www.acmicpc.net/source/19674821
https://gurtn.tistory.com/20