[백준] JavaScript 2884번 알람 시계

Noma·2021년 8월 27일
0
post-custom-banner

문제

출처: 백준 2884번 알람 시계

주어진 시간을 45분 앞서서 출력하라.

예시

10 10 -> 9 25

풀이 1 ( readline )

접근 : 주어진 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();
})

풀이 2 ( fs )

접근 : 주어진 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}`)

풀이 3 ( fs )

접근 : 주어진 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

profile
오히려 좋아
post-custom-banner

0개의 댓글