1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ある数字までの出力 2 JavaScript編(paizaランク D 相当)

1
Last updated at Posted at 2026-08-03

paizaの「ある数字までの出力 2」という問題をJavaScriptで解きました。

今回は、正の整数 N が与えられたときに、1 から N までの整数を順番に改行区切りで出力します。

問題

正の整数 N が与えられます。

1 から N までの整数を、1 から順番に改行区切りで出力します。

入力される値

N

入力例1

1

出力例1

1

入力例2

5

出力例2

1
2
3
4
5

回答コード

process.stdin.resume();
process.stdin.setEncoding("utf8");

// 自分の得意な言語で
// Let's チャレンジ!!

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]);

  for (let i = 1; i <= N; i++) {
    console.log(i);
  }
});

paizaにもともと入っているコード

今回、次の部分は自分で一から書いたものではありません。

paizaのJavaScriptの解答欄に、標準入力を受け取るためのコードとして最初から用意されていました。

process.stdin.resume();
process.stdin.setEncoding("utf8");

// 自分の得意な言語で
// Let's チャレンジ!!

var lines = [];

var reader = require("readline").createInterface({
  input: process.stdin,
  output: process.stdout
});

reader.on("line", (line) => {
  lines.push(line);
});

reader.on("close", () => {

入力された内容は、lines という配列に1行ずつ入ります。

今回の入力は1行だけなので、入力された値は lines[0] に入ります。

自分で追加したコード

今回、自分で追加した主な処理は次の部分です。

const N = Number(lines[0]);

for (let i = 1; i <= N; i++) {
  console.log(i);
}

入力された値を数値に変換する

const N = Number(lines[0]);

標準入力から受け取った値は、最初は文字列として扱われます。

入力が次の場合、

5

lines[0] の中身は文字列の "5" です。

lines[0] // "5"

今回は数値として比較するため、Number() を使って数値に変換します。

Number("5") // 5

その結果を変数 N に代入しています。

const N = Number(lines[0]);

処理の流れは次のようになります。

lines[0]          // "5"
Number(lines[0])  // 5
const N = 5;

for文を使って繰り返す

for (let i = 1; i <= N; i++) {
  console.log(i);
}

for 文は、同じ処理を繰り返したいときに使います。

基本の形は次のとおりです。

for (初期化; 条件; 増減) {
  繰り返す処理
}

今回のコードを分けて見ると、次のようになります。

for (
  let i = 1;
  i <= N;
  i++
) {
  console.log(i);
}

それぞれの意味を確認します。

let i = 1

let i = 1;

繰り返しに使う変数 i を作り、最初の値として 1 を入れています。

今回は 1 から出力するため、i1 から始めます。

i = 1

i <= N

i <= N;

iN 以下の間、処理を繰り返します。

<= は「以下」という意味です。

例えば、N5 の場合は、次の条件になります。

i <= 5

i12345 の間は繰り返します。

i6 になると、

6 <= 5

は成立しないため、繰り返しを終了します。

i++

i++;

i++ は、i の値を1増やすという意味です。

i = i + 1;

と同じ意味です。

例えば、i1 の場合、

i++;

を実行すると、i2 になります。

1  2

次の繰り返しでは、さらに1増えて 3 になります。

2  3

このように、1回処理するたびに i が1ずつ増えていきます。

console.log(i)

console.log(i);

現在の i の値を出力します。

console.log() は、出力の末尾に改行を入れます。

そのため、繰り返しのたびに console.log(i) を実行すると、次のように改行区切りで表示されます。

1
2
3
4
5

入力が5の場合の流れ

入力が次の場合、

5

最初に、N には数値の 5 が入ります。

const N = 5;

その後、for 文が実行されます。

1回目

i = 1

条件を確認します。

1 <= 5 // true

条件が成立するため、1 を出力します。

1

その後、i++ によって i2 になります。

2回目

i = 2

条件を確認します。

2 <= 5 // true

2 を出力します。

2

その後、i3 になります。

3回目

i = 3

条件が成立するため、3 を出力します。

4回目

i = 4

条件が成立するため、4 を出力します。

5回目

i = 5

条件を確認します。

5 <= 5 // true

5N 以下なので出力されます。

6回目

i++ により、i6 になります。

i = 6

条件を確認します。

6 <= 5 // false

条件が成立しないため、繰り返しを終了します。

最終的な出力は次のとおりです。

1
2
3
4
5

なぜ i < N ではなく i <= N なのか

今回の問題では、N も出力する必要があります。

そのため、条件を次のように書きます。

i <= N

例えば、N5 の場合、

5 <= 5

は成立するため、5 も出力されます。

一方、次のように書いた場合、

i < N

これは「iN より小さい間」という意味です。

N5 の場合、

5 < 5

は成立しません。

そのため、出力は 4 までになってしまいます。

1
2
3
4

今回は N まで出力する必要があるため、< ではなく <= を使います。

Nが1の場合

入力が次の場合、

1

N1 になります。

const N = 1;

for 文の最初の値も 1 です。

let i = 1;

条件を確認すると、

1 <= 1

は成立します。

そのため、1 が出力されます。

1

その後、i++ によって i2 になります。

2 <= 1

は成立しないため、繰り返しを終了します。

まとめて文字列を作る方法

今回のコードでは、console.log() を繰り返しの中で実行しています。

for (let i = 1; i <= N; i++) {
  console.log(i);
}

別の方法として、出力する内容を1つの文字列にまとめてから出力することもできます。

reader.on("close", () => {
  const N = Number(lines[0]);

  let result = "";

  for (let i = 1; i <= N; i++) {
    result += i + "\n";
  }

  console.log(result.trimEnd());
});

\n は改行を表します。

result += i + "\n";

ただし、今回の問題では、繰り返しの中で console.log(i) を使う書き方のほうがシンプルです。

for (let i = 1; i <= N; i++) {
  console.log(i);
}

今回覚えたこと

  • 1行目の入力は lines[0] で取り出せる
  • 標準入力から受け取った値は最初は文字列になる
  • Number() で文字列を数値に変換できる
  • for 文を使うと同じ処理を繰り返せる
  • let i = 1 で繰り返しを1から始められる
  • i <= NN まで繰り返せる
  • i++i を1ずつ増やせる
  • console.log() は出力後に改行する
  • 1 から N まで出力するときは i < N ではなく i <= N を使う
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?