[アルゴリズム]プリンセスを救う-queue


質問する


情報王国の隣国の一人娘姫は森の怪物に捕まった.
情報王国にはN人の王子がいて、彼らはお互いに王女を救うと言った.情報王国の王は以下の方法で王女を救うことにした.
王は王子たちを年齢順に1番からN番まで順番に番号をつけた.そして1番王子からN番王子まで順番に時計回りに回って、丸い輪に座らせます.そして1番王子から時計方向に戻り、1から番号を呼ぶ.王子がK(特定の数字)を叫ぶと、王女を救う場所から排除され、円の外に出る.そして次の王子様から、また1から番号を呼ぶ.
これで残りの王子は王女を救うことができます.

例えば全部で8人の王子がいて、3を叫ぶ王子を除く.最初は、3番王子が3を叫んで排除された.そして6、1、5、2、8、4番の王子は順番に排除され、最後に残りの7番の王子は王女を助けに行きました.

NとKを与えるときは、お姫様を救う王子様の番号を出力するプログラムを作成してください。


▼▼入力説明
第1行は、自然数N(5<=N<=1000)およびK(2<=K<=9)を与える.
▼▼出力説明
1行目に最後の王子の番号を出力します.
▼▼入力例1
8 3
▼▼出力例1
7

に答える

function solution(n,k){
  const queue = [];
  let answer = 0;
  for(let i = 1; i<n; i++){
    queue.push(i);
    if(queue.indexOf(i) === k-1){
      queue.splice(0,k-1);
    }
  }
  answer = queue[0];
  return answer;
}

▼▼問題の出所


https://www.inflearn.com/course/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4/dashboard