第89回【JavaScript】集合の結合
現在取り組んでいるのは、paiza ラーニング問題集「データセット選択メニュー」になります。
はじめに
猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。
JavaScript をゼロから勉強してみよう、のコーナー 89 回目です。
他人の書いたコードが理解出来なくて、自分はまだまだだと落ち込みました。読み解くつもりでドキュメントに目を通していると、まだまだ知らない使い方、知らないやり方がたくさんあって、反省しきりです。
それでは、今日も頑張ってみようと思います。
集合の結合 (paizaランク C 相当)
N 個の要素からなる数列 A, B が与えられます。A または B に含まれる値をすべて列挙し、重複を取り除いて昇順に出力してください。
入力される値
N
A_1 A_2 ... A_N
B_1 B_2 ... B_N
入力値最終行の末尾に改行が1つ入ります。
期待する出力
答えとなる数列 C を半角スペース区切りで1行に出力してください。
末尾に改行を入れ、余計な文字、空行を含んではいけません。
C_1 C_2 ...
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
・ 入力はすべて整数
・ 1 ≦ N ≦ 100
・ 1 ≦ A_i, B_i ≦ 1,000,000,000 (1 ≦ i ≦ N)
入力例
3
1 2 3
3 4 5
出力例
1 2 3 4 5
昇順に並べ替える必要がある、ということは、set のままではダメで・・・。
JavaScript
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', () => {
const n = Number(lines[0]);
const A = lines[1].split(/\s/).map(Number);
const B = lines[2].split(/\s/).map(Number);
const C = new Set(A.concat(B));
console.log([...C].sort((a, b) => a - b).join(' '));
});
Python
N = int(input())
A = [ int(x) for x in input().split() ]
B = [ int(x) for x in input().split() ]
C = set(A + B)
print(' '.join(map(str,sorted(C))))
最後に
なんだか、少し、JavaScript っぽい書き方な気がするけれど、慣れないうちにこのコードを見せられると挫折してしまいそうだ。Python のなんと簡潔なことか。
数字での並べ替えをいつも忘れてしまう。なんか不思議な書き方だよなぁ、とか。sort 一発でやって欲しいところ。というのはちょっとわがままか。
引き続き、よろしくお願いいたします!
ディスカッション
コメント一覧
まだ、コメントがありません