第46回【JavaScript】重複の削除、配列の最大最小

現在取り組んでいるのは、paiza ラーニング問題集「配列メニュー」になります。

はじめに

猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。

JavaScript をゼロから勉強してみよう、のコーナー 46 回目です。

時々、社内の人間と食事をする機会が戻ってきました。2 ヶ月に 1 回くらいのペースですけれど、コロナが猛威を振るっていたときには考えられなかったことです。日常が戻ってきた、と表現するには、あまりにも長い時間が経ちすぎていて、あの頃の日常がどのようなものだったのか、思い出すことが出来ません。

それでは、今日も頑張ってみようと思います。

重複の削除 (paizaランク D 相当)

以下のような数列があります。

1 3 5 1 2 3 6 6 5 1 4

この数列から数の重複をなくし、昇順にし改行区切りで出力してください。
数列を配列に格納し、並び替える操作や重複を削除する操作を考えて解いてみましょう。


入力される値

入力は与えられません。

入力値最終行の末尾に改行が1つ入ります。


期待する出力

数列から数の重複をなくし、昇順にし改行区切りで出力してください。

1
2
3
4
5
6

また、末尾に改行を入れ、余計な文字、空行を含んではいけません。


すべてのテストケースにおいて、以下の条件をみたします。

入力は与えられません。

これは知らなかったので、ちゃんと調べてみた。Python でもある、set を利用するのがベストらしい。

JavaScript
const L = Array.from(new Set([1, 3, 5, 1, 2, 3, 6, 6, 5, 1, 4]));
L.sort((a,b) => a-b);
for (let i = 0; i < L.length; i++) {
    console.log(L[i]);
}
Python
L = [1, 3, 5, 1, 2, 3, 6, 6, 5, 1, 4]
setL = set(L)
sortedSetL = sorted(setL)
for li in sortedSetL:
    print(li)

配列の最大最小 (paizaランク D 相当)

1 行目に整数 N が与えられます。
2 行目に N 個の整数 a_1, a_2, …, a_N が与えられます。
N 個の整数のうち、最大の数と最小の数を半角スペース区切りで出力してください。
N 個の整数を大きい順や小さい順に並び替える操作を考えて解いてみましょう。


入力される値

N
a_1 a_2 ... a_N

1 行目に整数 N が与えられます。
2 行目に N 個の整数 a_1, a_2, …, a_N が与えられます。

入力値最終行の末尾に改行が1つ入ります。


期待する出力

N 個の整数のうち、最大の数と最小の数を半角スペース区切りで出力してください。

a_MAX a_MIN

また、末尾に改行を入れ、余計な文字、空行を含んではいけません。


すべてのテストケースにおいて、以下の条件をみたします。

* N は 1 以上 10 以下の整数
* a_i (1 ≤ i ≤ N) は 1 以上 100 以下の整数


入力例

5
1 3 5 2 4

出力例

5 1

並べ替えを行って、最大値と最小値を求める問題。

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 = lines[0].split(/\s/).map(Number);
  const L = lines[1].split(/\s/).map(Number);
  L.sort((a,b) => b-a);
  console.log(L[0],L[n-1]);
});
Python
N = int(input())
L = input().split()
L.sort()
print(L[-1],L[0])

最後に

Python とあまり変わらず、結構、シンプルに書けてしまうんですね。set の使い方や sort() の使い方は理解できました。

set をそのまま sort() しようとして、ちょっとだけ詰まりました。この辺りはまだ理解が薄いので、Array.form() と書きましたが、スプレッド構文を利用するともっと簡潔に書くことが出来る模様。この辺りについては、今後、もう少し深堀して学習したいと思います。

引き続き、よろしくお願いいたします!

Python の第46回はこちら