문제 설명
머쓱이는 친구들과 동그랗게 서서 공 던지기 게임을 하고 있습니다. 공은 1번부터 던지며 오른쪽으로 한 명을 건너뛰고 그다음 사람에게만 던질 수 있습니다. 친구들의 번호가 들어있는 정수 배열 numbers와 정수 K가 주어질 때, k번째로 공을 던지는 사람의 번호는 무엇인지 return 하도록 solution 함수를 완성해보세요.
제한사항
2 < numbers의 길이 < 100 0 < k < 1,000 numbers의 첫 번째와 마지막 번호는 실제로 바로 옆에 있습니다. numbers는 1부터 시작하며 번호는 순서대로 올라갑니다.
풀이
음.. 그러니까 [1,2,3,4,5] 이렇게 서서 1번은 3번, 3번은 5번, 5번은 2번 이런식으로 진행되는거 같다.
동그랗게 서서 한명 건너뛰고 패스한다고 생각하면 편할듯
그때 k번째 공을 "던지는" 사람의 번호를 return 해야한다.
const solution = (numbers, k) => {
let ballIdx = 0; // 현재 공의 위치
let arr = []; // 던진 사람과 받는 사람을 구분하기 위해 배열 생성
for(let i = 0; i < k; i ++){ // k번 공을 던져야 하므로 for문 작성
arr = []; // for문이 시행될때, (공이 던져질때마다 초기화)
arr.push(numbers[ballIdx]) // 공을 던진사람 ( 현재 공을 가지고 있는 사람 )을 배열에 추가
ballIdx = (ballIdx + 2) % (numbers.length); // 공의 인덱스에 2를 더하고, 인원수로 나눈 나머지
arr.push(numbers[ballIdx]) // 받은 사람을 배열에 넣어준다.
}
return arr[0]; // 던진 사람 리턴
}