Paiza スキルチェック見本問題(JavaScript編)まとめ ~ランクD相当~

はじめに

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/

コメントを残す