✍️

JavaScript初学者がpaizaラーニングで Cランクを取るまで

2024/05/21に公開

はじめに

AtCoder をやりたいけれど、コードの書き方もちんぷんかんぷん
そこで、初学者向けに用意された paiza learning というものを利用してみよう!

なんと、無料なんです!!!

https://paiza.jp/works/mondai

ハンズオン形式で学習したい私は、講座ではなく問題集から入ってみます

公式で Blog 掲載に関する、注意点をしっかり記載しているので注意します
paiza ラーニングで学んだ内容をブログなどで公開したい – paizaFAQ

Cランク獲得を目指して

alt text

標準入力メニュー

覚えるべし。

const input = require('fs').readFileSync('/dev/stdin', 'utf8');

// 入力例 'hello paiza'
console.log(input) // hello paiza

半角スペース区切りに入力

const input = require('fs').readFileSync('/dev/stdin', 'utf8');

// 半角スペース区切りに配列へ格納
const values = input.split(' ');
console.log (values); // しっかり動くかこまめに確認大事。

// ループ回数の設定
const count = values.length; // 配列に格納されてる数(長さ)
console.log(count);

// 一度の出力で済むように
let result = ''; // result変数の初期化
for (let i = 0; i < count; i++) {
  result += values[i] + '\n';
}
console.log(result);

console.logを繰り返しの中で使うのはパフォーマンス上、あまりよくないみたいです。

  1. 半角スペース区切りに入力値を配列へ格納
  2. ループ回数を、配列の長さから設定
  3. 配列の中の値を、result変数に改行区切りで格納
  4. resultを出力

実際に問題を解いた時のコード

入力例
5
8 1 3 10 100
出力例
8
1
3
10
100
const input = require('fs').readFileSync('/dev/stdin', 'utf8');

// 1行目と2行目を分割
const lines = input.split('\n');
console.log(lines);

// 2行目を半角スペース区切りで配列へ格納
const values = lines[1].split(' ');
console.log(values);

// ループ回数の設定
const count = lines[0];
console.log(count);

// resultの初期化
let result = '';

// 繰り返し
for (let i = 0; i < count; i++) {
    result += values[i] + '\n';
}

// 出力
console.log(result);

いや、ほんとにこまめな確認大事なんですよ(たぶん

N行M列のデータ入力

Array.prototype.join()

配列の値を出力したいときに使います!

join() // 指定なしだと、「,」が区切り文字として出力される
join(separator) // separatorは、区切り文字

この構文を基に、MDNから引用した下の例を見てもらえたらと思います。

const elements = ['Fire', 'Air', 'Water'];

console.log(elements.join());
// Expected output: "Fire,Air,Water"

console.log(elements.join('')); // 空文字
// Expected output: "FireAirWater"

console.log(elements.join('-'));
// Expected output: "Fire-Air-Water"

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/join

Array.prototype.slice()

配列の値を出力させたくないときに使います!

slice() // 配列がそのまま出力
slice(start) // startが2だとすると、index番号2から出力(2番目は含まれる)
slice(start, end) // endが4だとすると、2番目から4番目までを出力(4番目は含まれない)

上の3つを基に、MDNから引用した下の例を見てもらえたらと思います。

//インデックス番号  0        1       2(-3)   3(-2)    4(-1)
const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];

console.log(animals.slice(2));
// Expected output: Array ["camel", "duck", "elephant"]

console.log(animals.slice(2, 4));
// Expected output: Array ["camel", "duck"]

console.log(animals.slice(1, 5));
// Expected output: Array ["bison", "camel", "duck", "elephant"]

console.log(animals.slice(-2));
// Expected output: Array ["duck", "elephant"]

console.log(animals.slice(2, -1));
// Expected output: Array ["camel", "duck"]

console.log(animals.slice());
// Expected output: Array ["ant", "bison", "camel", "duck", "elephant"]

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/slice

ここまでの内容で、標準入力メニューは全問正解できると思います。
次は、標準出力メニューをやっていきましょう!

標準出力メニュー

最後に

実際に仕事をしている友人から教えてもらったアドバイスとして、
コードを書く前に、日本語でプログラムを書け。
日本語で一連の流れを書けないのに、プログラミングなんて出来るわけないですよね。

GitHubで編集を提案

Discussion