35日目-2022.04.04


今日の勉強の内容


Baekjoonで問題を解く
1)問題:尚根が設定したアラーム時刻が与えられている場合は、アラームを45分前に変換するプログラムを作成してください.
第1行は2つの整数HとMを与える.(0≦H≦23,0≦M≦59)は、現在尚根で設定されているアラーム時間HのM分を意味する.入力時間は24時間で表示されます.24時間の表現では、1日の始まりは0:0(真夜中)、終わりは23:59(翌日の真夜中の1分前).時間を表すとき、不要な0は使いません.
のりづけ
2. ? 利用する
let H = Math.floor(parseInt(input[0]));
let M = Math.floor(parseInt(input[1]));


    if (M-45 >=0 ){
        console.log(`${H}` + " " + `${M-45}`);
    } else {
        H>=1 ? console.log(`${H-1}` + " " + `${M+15}`) :  console.log(23 + " " + `${M+15}`);
    }
2)質問:ローストダックの開始時間とオーブン焼きに要する時間を分単位で計算する手順を作成してください.
最初の行には現在の時刻が表示されます.現在の時刻A(0≦A≦23)とB(0≦B≦59)は整数でスペースを隔てて順次与えられる.2行目は分単位で調理に要する時間C(0≦C≦1000)を与える.
最初の行が終了した時刻の時と、スペースを区切って出力します.(ただし、時間は0から23までの整数、分は0から59までの整数です.数字の時計は23時59分から1分後は0時0分です.)
苦悩の過程.
1番の問題と異なり,与えられた値に変化する値は固定されていない.
Cの値を時と分で割った形式、およびAとBの形式/
Aが23、Bが60の場合、AとBは空です.
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');

let A = Math.floor(parseInt(input[0])); 
let B = Math.floor(parseInt(input[1]));
let C = Math.floor(parseInt(input[2]));
let d = Math.floor((B+C)/60);

if (A>=0 && A<=23 && B>=0 && B<=59 && C>=0 && C<=1000 ) {
    if(B + C <=59 ){
       console.log(`${A}` + " " + `${B+C}`);
       } else if (A+d<=23 && B + C >=60) {
        console.log(`${A+d}` + " " + `${(B+C)%60}`);          
       } else if (A+d >=24 && B+C >=60){
           console.log(`${A+d-24}` + " " + `${(B+C)%60}`);
       }
}
やってみたけど間違ってた文が正しいようだが、間違っているのではなく、間違っているので、宣言部分が間違っているのではないかと疑う.
以前の問題によれば、入力値が複数行の場合、宣言入力時にsplit("n")となります.
空白の行はsplit("")ですが、この問題は2つのブレンドです.
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');

let A = Math.floor(parseInt(input[0].split(' '))); 
let B = Math.floor(parseInt(input[1].split(' ')));
しましたが、答えを間違えました.
3)質問:1から6までの目でサイコロを投げ、以下のルールでボーナスをもらうゲームが3つあります.
同じ目3個なら10000元+(同じ目)×1000元のボーナス
同じ目が2つしかない場合は、1000元+(同じ目)×100元の賞金.
すべての目が違う場合(その中で一番大きい)×100元の賞金.
サイコロの目を3つあげるときは、ボーナスを計算するプログラムを書いてください.
1列目には3つの目がスペースを隔てて別々に与えられています.
1行目はゲームボーナスを印刷します.
苦悩の過程.
各眼がa,b,cと言うとき、1<=a,b,c<=6/である.
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split(' ');

let a = Math.floor(parseInt(input[0]));
let b = Math.floor(parseInt(input[1]));
let c = Math.floor(parseInt(input[2]));
let d = Math.max(a,b,c);

if (1<= a,b,c <= 6) {
    if (a==b && a==c && b==c) {
        console.log(`${10000+(a*1000)}`);
    } else if (a==b || b==c || a==c) {
    	console.log(`${1000+(a*100)}`);
    } else if (a !==b && a!==c && b!==c) {
        console.log(`${d*100}`);
    } 
}
やってみたけど間違ってた理由を考えると,初めてelse ifゲートでa,b,cでb,cが同じである可能性があり,同じ目の値をaと断定したと推測される.
に答える
1.非効率的ですが、リストして試します
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split(' ');

let a = Math.floor(parseInt(input[0]));
let b = Math.floor(parseInt(input[1]));
let c = Math.floor(parseInt(input[2]));
let d = Math.max(a,b,c);

if (1<= a,b,c <= 6) {
    if (a==b && a==c && b==c) {
        console.log(`${10000+(a*1000)}`);
    } else if (a !==b && a!==c && b!==c) {
        console.log(`${d*100}`);
    } else if (a==b && a!==c && b!==c){
        console.log(`${1000+(a*100)}`);
    } else if (a==c && a!==b && b!==c){
        console.log(`${1000+(a*100)}`);
    } else if (b==c && a!==b && a!==c){
        console.log(`${1000+(b*100)}`);
    }
}
  • 同じ目には2つの場合の異なる表現がある:
  • if (1<= a,b,c <= 6) {
        if (a==b && a==c && b==c) {
            console.log(`${10000+(a*1000)}`);
        } else if (a !==b && a!==c && b!==c) {
            console.log(`${d*100}`);
        } else if (a-b ==0 && a!==c){
            console.log(`${1000+(a*100)}`);
        } else if (a-c ==0 && a!==b){
            console.log(`${1000+(a*100)}`);
        } else if (b-c ==0 && a!==b){
            console.log(`${1000+(b*100)}`);
        }
    }
  • 2シン
  • if (1<= a,b,c <= 6) {
        if (a==b && a==c && b==c) {
            console.log(`${10000+(a*1000)}`);
        } else if (a !==b && a!==c && b!==c) {
            console.log(`${d*100}`);
        } else if (a-b ==0){
            console.log(`${1000+(a*100)}`);
        } else if (a-c ==0){
            console.log(`${1000+(a*100)}`);
        } else if (b-c ==0){
            console.log(`${1000+(b*100)}`);
        }
    }
    if文の先頭3つは同じまたは異なる場合であり,後のelse ifの内容は同じまたは異なる内容ではないので簡略化できる.
  • 3番目のプールは再び
  • を簡略化する.
    if (1<= a,b,c <= 6) {
        if (a==b && a==c && b==c) {
            console.log(`${10000+(a*1000)}`);
        } else if (a !==b && a!==c && b!==c) {
            console.log(`${d*100}`);
        } else if (a-b ==0){
            console.log(`${1000+(a*100)}`);
        } else {
            console.log(`${1000+(c*100)}`);
        }
    }
  • 32日目に行うことにしました.
    A>=-1000&A<=10000&B>-1000&B<=10000
    -1000<=A、B<=10000で良いのですが、無理だと思い別の方法を探しています.疑いはいいが、自分でやってみる必要がある.
  • 明日にする

  • オーブントラブルシューティング
  • BaekJoonその間に他の解題方法
  • を試みる
  • readlineモジュールは
  • をよく知っています.

    一日を振り返る


    今こそ勉強する時で、新しい内容の学習能力が悪いところは改善しなければならない.
    振り向くと忘れてしまいますが、自分でもう一度書いて、体で覚える必要があるようです.
    満足度:★☆☆☆☆

    学習ソース


    BaekJoon
    上の内容は勉强の中で私が理解した内容で、いくつか间违った内容があるかもしれません.
    灰毒中発見時の修正