본문 바로가기

백준1158 - 요세푸스 문제 (queue) JS 본문

개발/algorithm

백준1158 - 요세푸스 문제 (queue) JS

자전하는명왕성 2023. 9. 24. 09:49

https://www.acmicpc.net/problem/1158

해당 문제는 특정 번째 사람을 제거하는 식으로 진행되므로, 

선입선출 방식을 적용할 수 있는 queue 자료 구조로 문제를 해결하면 된다.

 

이 문제의 풀이는 배열로 queue를 구현하여 적용했다.

const fs = require('fs')
const input = fs.readFileSync(process.platform === "linux" ? "/dev/stdin":"입력.txt")
  .toString().trim()

function solution(data) {
  const [N,K] = data.split(' ').map(Number)
  const queue = Array.from({length : N}, (_,idx)=> idx + 1)
  const result = []

  let idx = 0
  while(queue.length) {
    const shift = queue.shift()
    // K = 3일 시, idx % K가 2면 3번째 순서마다가 된다
    idx++ % K === K - 1 
      ? result.push(shift) 
      : queue.push(shift)
  }

  console.log(`<${result.join(', ')}>`)
}

solution(input)

'개발 > algorithm' 카테고리의 다른 글

백준1149 - RGB거리 (DP) JS  (1) 2023.09.26
백준14501 - 퇴사(DP) JS  (0) 2023.09.25
백준2292 - 벌집 JS  (0) 2023.09.23
백준9324 - 진짜메시지 JS  (0) 2023.09.22
백준1063 - 킹 JS  (1) 2023.09.21
Comments