今回は paiza の「「長テーブルのうなぎ屋」を解くために:part3」の問題に挑戦!
問題概要
うなぎ屋のテーブルには n 個の座席 が一直線に並んでいる。
(※円ではなく、1番とn番はつながっていない)
あるグループが来店し、
「座席番号 b から a 人が順に座る」とき、
その人たちが どの座席に座るか を求めて出力する。
🔹入力
n
a b
-
n:座席の総数(1行目) -
a:グループの人数(2行目) -
b:最初に座る人の座席番号
🔹出力
s_1 s_2 ... s_a
- グループ全員の座席番号を順に出力(スペース区切り)
入力例:
6
4 2
出力例:
2 3 4 5
✅OK例:
const rl = require('readline').createInterface({ input:process.stdin });
const lines = [];
rl.on('line', (input) => lines.push(input));
rl.on('close', () => {
const n = Number(lines[0]);
const [a, b] = lines[1].split(' ').map(Number);
const ans = [];
for (let i = b; i < a + b; i++) {
ans.push(i);
}
console.log(ans.join(' '));
});
流れ:
- 1行目から座席数
nを読む(今回は使わない) - 2行目から人数
aと最初の席bを読む - 空の配列
ansを作る -
bからa人分の席番号を順にansに入れる - 配列をスペース区切りで出力
🔍短くしてみた
const [n, a, b] = [Number(lines[0]), ...lines[1].split(' ').map(Number)];
console.log([...Array(a)].map((_, i) => b + i).join(' '));
流れ:
- 1行目と2行目を同時に分解して
n, a, bを取得 - 長さ
aの空配列を作る(Array(a)) - 各要素のインデックス
iを使って、b + iの座席番号を作る - 配列をスペース区切りで出力
📝まとめ
「b から a 人、順に番号を作るだけ」
→ for文でも map でも、やってることは同じ!