[伯俊]JavaScript 2884目覚まし時計


質問する


ソース:白駿2884号目覚まし時計
所定の時間を45分前に印刷します.


10 10 -> 9 25

プール1(readline)


近接:状況に応じて所定の時間と分を増減する
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に比べて時間と分を減算します.
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)


近接:指定した時間と分ではなく、分単位で統一的に計算されます.
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}`)
3人の中で最後の答えが一番速い.
時間の問題だけでなく、距離、重量などの問題であれば、一つの単位に統一して計算する方法もあることを覚えておいてください.

参考資料


https://www.acmicpc.net/source/19674821
https://gurtn.tistory.com/20