728x90

공은 옆사람 건너띄고 다음사람에게만 던지며 

마지막 배열의 원소 다음은 처음 원소와 맞닿아 있다.

 

k번 던질 때 마지막으로 던지는 사람은?

 

public int solution(int[] numbers, int k) {

Queue<Integer> list = new LinkedList<>();

for (int j = 0; j < numbers.length; j++) {

list.offer(numbers[j]);

}

for (int i = 0; i < k-1; i++) {

list.offer(list.poll());

list.offer(list.poll());

}

return list.peek();

}

맨 마지막 사람과 처음 사람이 맞닿아 있는것을 표현하기위해서  Queue 로 표현했다.

 

 

다른 풀이

k-1번 던진다는 뜻은 0번 인덱스에서 +2씩 k-1번 인덱스로 옮긴다는것이다. 

=> 2k-2번 인덱스가  마지막으로 던질 사람이다. 

만약 3명이 3번 던진다면 5번인덱스 => 1,2,3,1,2   5번 인덱스는 ==2

식으로 나타내면 numbers[(2*k-2)%numbers.length+1]이다.

public int solution2(int[] numbers, int k) {

return numbers[(2*k-2)%numbers.length];

}

'Java > Coding Test' 카테고리의 다른 글

삼각형의 완성조건(2) 문제풀이  (0) 2023.09.15
영어가 싫어요 문제풀이  (0) 2023.09.14
숨어있는 숫자 덧셈(2) 문제풀이  (0) 2023.09.13
외계어 사전  (0) 2023.09.12
특이한 정렬 문제풀이  (1) 2023.09.12

+ Recent posts