TIL
[코테연습] 1823. Find the Winner of the Circular Game
크라00
2024. 6. 22. 12:17
https://leetcode.com/problems/find-the-winner-of-the-circular-game/description/
- 스택 / 큐 문제
- k 번째에 해당하는 element 를 삭제하는 문제
- 문제 풀이
1. Queue 선언
2. n 에 해당하는 element 를 반복문으로 queue 에 초기화
3. queue 의 사이즈가 1보다 클때까지 계속 반복하는 while 문 사용
4. int count 변수를 1로 초기화하여 k 번째 인지 여부를 counting 한다.
5. k 번째 일 경우에는 queue 에 요소를 담지 않고 넘어가고, count 를 0 으로 초기화 한다.
5-1. 0 으로 초기화 하는 이유는 밑에 count++; 때문.
6 . 마지막에 queue를 poll 하여 정답을 리턴한다.
class Solution {
public int findTheWinner(int n, int k) {
Queue<Integer> queue = new LinkedList<>();
for (int i = 1; i <= n; i++) {
queue.offer(i);
}
int count = 1;
while(queue.size() > 1) {
int polled = queue.poll();
if (count == k) {
count = 0;
} else {
queue.offer(polled);
}
count++;
}
return queue.poll();
}
}