[白俊]JavaScript 10250 ACMホテル
Question
[白俊]JavaScript 10250 ACMホテル
input
プログラムは標準入力から入力データを受信する.プログラムの入力はT個のテストデータからなり,Tは入力の第1行に与えられる.各テストデータは1行としてH、W、N、3つの整数を含み、それぞれホテルの階数、各階の部屋数、何人目の客(1≦H、W≦99、1≦N≦H)を表す.× W).
output
プログラムは標準出力に出力されます.各テストデータは、N番目のお客様に割り当てる部屋番号を正確に印刷します.
example
2
6 12 10
30 50 72
402
1203
Solution
console.log(require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').splice(1).map(e=>{
const [h,w,n]=e.split(' ');
const floor=n%h;
const room=String(Math.ceil(n/h)).padStart(2,'0');
return `${floor!==0?floor:h}${room}`
}).join('\n'));
What I learned
最初に湖を表現した時、1番=>01番、12番=>12番で、このように表現するために湖水に0.01を乗じて小数とし、小数部だけを取るように接近します.
const room=String(((Math.ceil(n/h))*0.01).toFixed(2)).split('.')[1];
しかしこの問題のように、必要な桁数によって、場合によっては文字を増やす方法がよく使われていますが、毎回このように乗じて割るのが一番の方法なので、もう一度検索してみると、とても役に立つ文字列の方法が見つかりました.padStartとpadEndです.str.padStart(targetLength,[,padString])
padStart()メソッドは、現在の文字列の先頭を別の文字列で埋め、所定の長さを満たす新しい文字列を返します.入力は、ターゲット文字列の先頭(左側)から適用されます.
'abc'.padStart(10); // " abc"
'abc'.padStart(10, "foo"); // "foofoofabc"
'abc'.padStart(6,"123465"); // "123abc"
'abc'.padStart(8, "0"); // "00000abc"
'abc'.padStart(1); // "abc"
str.padEnd(targetLength,[,padString])
padStartと同様に、padEndの違いは、ターゲット文字列の右側(終了)から塗りつぶしを開始することです.
Reference
この問題について([白俊]JavaScript 10250 ACMホテル), 我々は、より多くの情報をここで見つけました https://velog.io/@wiostz98kr/백준-JavaScript-10250번-ACM-호텔テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol