본문 바로가기

자료구조+알고리즘/BOJ

[BOJ-11866_silver5]요세푸스 문제 0 (자바스크립트)

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

 

11866번: 요세푸스 문제 0

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)

www.acmicpc.net

 

[유형]

- 구현

- 자료 구조

- 큐

 

 

 

[풀이]

 

K 번째를 제거하면서 배열에 넣어줌 

 

대략 아래 처럼

 

 

[코드 풀이]

const fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().trim().split(' ');

const n = +input[0]; // string -> number
const k = +input[1];
let ans = [];

//n 길이의 1~n 배열 생성
let arr = Array.from({length: n}, (v, i) => i + 1);

for(let i=0; i<n; i++) { // 배열의 길이만큼 반복
  for(let j=1; j<=k; j++){ // 첫번째붙 3번째까지만 반복 
    if(j === k) { //3번째 빼서 temp에 넣기
      ans.push(arr.shift());
    }else{ //arr 배열 맨앞에 있는걸 맨뒤로 보내기
      arr.push(arr.shift());
    }
  }
}

// console.log('ans🍀', ans);
console.log('<'+ans.join(', ')+'>')

 

 

 

 

 

 

✅ Array.from( {length: n} , (v, i) => i + 1 )

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/from

 

Array.from() - JavaScript | MDN

Array.from() 정적 메서드는 순회 가능 또는 유사 배열 객체에서 얕게 복사된 새로운 Array 인스턴스를 생성합니다.

developer.mozilla.org

 

얕게 복사된 새로운 어레이 인스턴스 생성

 

{length: n} 객체를 전달하여 배열의 길이를 설정

배열의 각 요소는 (v, i) => i+1 함수에 의해 초기화, -> 이 함수는 두 개의 매개변수를 가지며, 각 요소의 값(value) 과 인덱스(index) 를 나타낸다. 여기서 인덱스에 1을 더하여 각 요소의 값으로 설정한다

결과적으로 이 코드는 1부터 n 까지의 값을 값는 배열을 생성한다.

 

 

 

✅ Array.shift()

shift() 메서드는 배열에서 첫 번째 요소를 제거하고, 제거된 요소를 반환!

 

728x90
반응형