✍️
JavaScript初学者がpaizaラーニングで Cランクを取るまで
はじめに
AtCoder をやりたいけれど、コードの書き方もちんぷんかんぷん
そこで、初学者向けに用意された paiza learning というものを利用してみよう!
なんと、無料なんです!!!
ハンズオン形式で学習したい私は、講座ではなく問題集から入ってみます
公式で Blog 掲載に関する、注意点をしっかり記載しているので注意します
paiza ラーニングで学んだ内容をブログなどで公開したい – paizaFAQ
Cランク獲得を目指して
標準入力メニュー
覚えるべし。
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を繰り返しの中で使うのはパフォーマンス上、あまりよくないみたいです。
- 半角スペース区切りに入力値を配列へ格納
- ループ回数を、配列の長さから設定
- 配列の中の値を、result変数に改行区切りで格納
- 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"
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"]
ここまでの内容で、標準入力メニューは全問正解できると思います。
次は、標準出力メニューをやっていきましょう!
標準出力メニュー
最後に
実際に仕事をしている友人から教えてもらったアドバイスとして、
コードを書く前に、日本語でプログラムを書け。
日本語で一連の流れを書けないのに、プログラミングなんて出来るわけないですよね。
Discussion