ソートの基本 (paizaランク C 相当)
解いてみました。問題文に従って、a_1 ≦ a_2 ≦ ... ≦ a_n
かどうか判定します。
解答コード例
JavaScript
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin", "utf-8").trim();
const lines = input.split("\n");
//数列の長さを表す整数 n
const n = Number(lines[0]);
//数列 a
const a = lines[1].split(" ").map(Number);
//a_1 ≦ a_2 ≦ ... ≦ a_n かどうか判定
let flag = true;
for (let i = 0; i < n - 1; i++) {
if (a[i] > a[i + 1]) {
flag = false;
break;
}
}
//a が昇順でソートされている場合は Yes を、そうではない場合は No を出力
if (flag) {
console.log("Yes");
} else {
console.log("No");
}
別解で、sliceやsort,everyや三項演算子を用いて解いてみました。
別解
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin", "utf-8").trim();
const lines = input.split("\n");
//数列の長さを表す整数 n
const n = Number(lines[0]);
//数列 a
const a = lines[1].split(" ").map(Number);
//数列 a が昇順でソートされた状態 aSorted
//slice()でコピーを作り、数列aと連動しないようにする
const aSorted = a.slice().sort((a, b) => a - b);
//a が昇順でソートされている場合は Yes を、そうではない場合は No を出力
console.log(a.every((v, i) => v === aSorted[i]) ? "Yes" : "No");