はじめに
Paizaにてスキルチェック見本問題(JavaScript編)を解いてみました。
本番問題の解答・解説はNGですが、見本問題に関しては、公開していいそうなのでまとめておきます。
(回答をPaizaでは再度閲覧できないため、備忘録的目的もあります。)
また、事前知識として標準入力の基本を知っておく必要がありますが、今回は割愛します。
以下の記事を参考にしてみてください。
https://chobimusic.com/javascript_standard_input/
①一番小さい値 (paizaランク D 相当)
以下が問題のリンクです。詳細はこちらでご確認ください。
https://paiza.jp/works/mondai/skillcheck_sample/min_num?language_uid=javascript
実際に入力される値: 10 12 4 8 46
期待される出力: 4
解答コード: process.stdin.resume(); process.stdin.setEncoding('utf8'); var input_lines = []; var reader = require('readline').createInterface({ input: process.stdin, output: process.stdout }); reader.on('line', (line) => { input_lines.push(line); }); reader.on('close', () => { console.log(Math.min.apply(null,input_lines)); });
Math.min(max)メソッドは配列を渡す際、applyメソッドを付けないと認識できずNaNを返します。
Qiitaでは、applyメソッド使わずreduce使うという記事も見かけましたが、こちらで正解なるので一旦これでいきます。
②数の並び替え (paizaランク D 相当)
以下が問題のリンクです。詳細はこちらでご確認ください。
https://paiza.jp/works/mondai/skillcheck_sample/sort-number?language_uid=javascript
実際に入力される値: 5 3 5 19 1 2
期待される出力: 1 2 3 5 19
解答コード: process.stdin.resume(); process.stdin.setEncoding('utf8'); //PHPと違って複数行一気に取得される。 var input_lines = []; var reader = require('readline').createInterface({ input: process.stdin, output: process.stdout }); reader.on('line', (line) => { input_lines.push(line); }); reader.on('close', () => { let n = input_lines[0] var lines = []; for(var x = 1;x <= n; x++){ lines.push(input_lines[x]); } function compareFunc(a, b) { return a - b; } lines.sort(compareFunc); for(var x = 0;x < n; x++){ console.log(lines[x]); } });
難しい・・・笑笑
数値をソートするには、引数に比較関数(compareFunction)を指定します。
そうしないと、辞書的な並び順になり19が2より先に表示されちゃいます。
おわりに
現状、PHPの方が楽だなと感じてますが、もう少しJavaScriptトライしてみます。
関連リンク
Paiza スキルチェック見本問題(PHP編)まとめ ~ランクC相当~
https://chobimusic.com/paiza_skillcheck_c/
Paiza スキルチェック見本問題(PHP編)まとめ ~ランクD相当~
https://chobimusic.com/paiza_skillcheck_d/
コメントを残す