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 |