공 던지기(Lv.0)[좀 더 답에만

나는 수줍은 친구들과 원 안에 서서 공 던지기를 한다. 1번이 공을 던지는데 한 사람은 오른쪽으로 건너뛰고 다음 사람에게만 던질 수 있다. 친구의 숫자를 포함하는 정수 배열 숫자와 정수 K가 주어지면, solve 함수를 완성하여 k번째 투수의 번호를 반환합니다.


제한

  • 2 숫자 길이 < 100
  • 0 케이 < 1,000
  • 숫자의 첫 번째와 마지막 숫자는 실제로 서로 바로 옆에 있습니다.
  • 숫자는 1부터 시작하여 순서대로 올라갑니다.

I/O 예제 번호skresult

(1, 2, 3, 4) 2
(1, 2, 3, 4, 5, 6) 5
(1, 2, 3) 2

I/O 예시 설명

I/O 예제 #1

  • 1번이 먼저 3번에게 공을 던집니다.
  • 3번은 1번에게 두 번째로 공을 던진다.

I/O 예제 #2

  • 1번이 먼저 3번에게 공을 던집니다.
  • 3번은 두 번째로 5번에게 공을 던집니다.
  • 5번은 세 번째로 1번에게 공을 던집니다.
  • 1번이 3번에게 네 번째로 공을 던진다.
  • 3번은 다섯 번째로 공을 5번에게 던진다.

I/O 예제 #3

  • 1번이 먼저 3번에게 공을 던집니다.
  • 3번은 두 번째로 2번에게 공을 던집니다.
  • 2번은 세 번째로 1번에게 공을 던집니다.

※ 참고 – 2023년 1월 25일 테스트 케이스가 추가되었습니다. 이전에 제출한 코드가 실패할 수 있습니다.


+2단계

k개의 숫자(0)까지 2를 계속 더합니다.

마지막 사람이 되기 전에 마지막 사람이 각각 0번째 또는 1번째 요소에 공을 주어야 합니다.

if (마지막 요소인 경우 마지막 요소 이전)
도착1.푸시()

배열 길이 – 마지막 = 0 이전의 요소 위치
4 – 2 – 2 = 0
6 – 4 – 2 = 0

0 1 2(최소 어레이 길이는 3)
3 – 1 – 2 = 0

0 2 1 0 2 1

5 – 3 – 2 = 0
7 – 5 – 2 = 0

arraylength – 마지막 요소의 위치 = 1
3 – 2 = 1
0 1 2 3 4 5

6 – 5 = 1
k는 arr1의 배열 길이 수만큼 얻어야 합니까?

하나
2
4
5
6
7
8일
9
10
11
12
13
14
15
16
17
18
19
20
함수 솔루션(숫자, k) {
하자 arr1 = ();
더하자 = 0;
for(let i=0; i<=k; i++){
// 공을 터치한 사람의 수(숫자 0은 첫 번째 사람을 포함한 첫 번째 사람)
arr1.push(numbers(0)+i*2) // 2씩 증가
콘솔.로그(arr1)
if(i*2 == 숫자.길이-2){
// 마지막 사람 이전인 경우 앞으로 이동(0에서 시작)
케이 = 2
}그렇지 않으면(숫자.길이-1 == 2*i){
// 1에서 다시 시작
도착1.푸시(8)
}
}
}
CS

아래와 같이 첫 번째 열로 돌아갈 수 없습니다.

성능 가치 > (1, 2, 3, 4), 2
기대값 >
실행 결과 > 정의되지 않은 실행 결과는 예상 값 3에서 벗어납니다.
누르다 > ( 하나 )
(1, 3)
(1, 3, 5)
시험 2
입력된 값 > (1, 2, 3, 4, 5, 6), 5
기대값 >
실행 결과 > 정의되지 않은 실행 결과는 예상 값 3에서 벗어납니다.
누르다 > ( 하나 )
(1, 3)
(1, 3, 5)
시험 3
입력된 값 > (1, 2, 3), 3
기대값 > 2
실행 결과 > 정의되지 않은 실행 결과는 예상 값 2에서 벗어납니다.
누르다 > ( 하나 )
(1, 3)
(1, 3, 8, 5)
(1, 3, 8, 5, 7)

function solution(numbers, k) {
return numbers((k - 1) * 2 % numbers.length);
}

//x번째로 던져진 지점이 아니라 던진 사람이기 때문에 k - 1을 해주고, 한 사람씩 건너뛰므로 2를 곱해준 값을 배열의 크기로 나눈 index


검토

배열의 위치를 ​​찾는 정도였기에 배열의 위치 값을 이동시켜 값을 구하는 방법을 다들 살펴보았습니다.

디자인도 내가 원하는 방식이 아닌 좀 더 쉽게 결과를 얻을 수 있도록 고민을 많이 해야겠습니다.