2
1
paiza×Qiita記事投稿キャンペーン「プログラミング問題をやってみて書いたコードを投稿しよう!」

【JavaScript】名刺バインダー管理 (paizaランク B 相当) やってみたのと解説

Last updated at Posted at 2024-08-19

これのやつです。

問題

解答コード

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, m] = lines[0].split(' ').map(item => Number(item));
  
  const set = n * 2;
  let front = 1;
  let back;
  let i = 0;
  while(front <= m){
      if(front % set === 1){
          i++;
          back = i * set;
      }else{
          back--;
      }
      front++;
  }
  console.log(back);
});

解説

問題見た時 N(1) で求められそうだな、と思いました。ただ、計算式を作るより、そのまま処理を書いてしまった方が自分の数学知識的に早そうだし、間違った時にデバッグしやすそうだなと思い、そのまんま処理を書きました。
単純に以下の順で数えてます。

<入力例3>
3 8
の場合

front...1 back ...6
front...2 back ...5
front...3 back ...4
front...4 back ...3
front...5 back ...2
front...6 back ...1
front...7 back ...12
front...8 back ...11

感想

Bランクは問題の内容さえ理解していれば、そのまま解けば大丈夫そうな印象でした。
ただ、実際のレベルアップの試験の方が難しいので実際はわかりません。
(自分はBランクで、Aランクアップへの挑戦に何度か負けています)
あまり解説していませんが、読んでいただきありがとうございます。

2
1
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
2
1