1行目で正の整数nが入力され、続くn行の各行で整数が1つずつ入力されます。n個の整数を小さい順に改行区切りで出力してください。
実行環境はwebサイト(学習サイト)上にあります。
入力データは、
入力例1の場合
5
3
5
19
1
2
入力データ2の場合
10
2
3
4
5
4
3
2
1
1
8
になっています。
この入力データは変数linesに配列として格納されており、
インデックス[0]番目は、以降インデックスの数(n個)を表しております。
例ですが、入力データ1の場合は、lines[0]に5が格納されており、lines[1]〜[5]まで出力しないといけないという事です。(出力の際は改行区切りで出力しないといけないルールです)
上記入力データ1,2を書きましたが、これはあくまで入力例であり、実際には入力されたデータは隠されており見る事ができません。
今回の質問ですが
問題は解けたのですが、for文を2回書いている所が気になります。
なぜか1回目のfor文の末尾にconsole.log(arr[i]);
を書くと
3
5
19
19
19
と出力されてしまいます。(入力例1の場合)
なぜ、このような出力結果になってしまうのでしょうか?
ご回答よろしくお願いします。
process.stdin.resume(); process.stdin.setEncoding('utf8'); var lines = []; var reader = require('readline').createInterface({ input: process.stdin, output: process.stdout }); reader.on('line', (line) => { lines.push(line); }); reader.on('close', () => { var n = lines[0]; var arr = []; function compare(a,b){ return a-b; } for(var i=0; i<n; i++) { arr.push(lines[i+1]); // arr.sort(compare); 編集前 // console.log(arr[i]); } arr.sort(compare); // 編集後 for(var i=0; i<n; i++){ console.log(arr[i]); } });
回答1件
あなたの回答
tips
プレビュー