728x90
반응형
문제 설명
N명의 사람이 원 형태로 서 있습니다. 각 사람은 1부터 N까지 번호표를 갖고 있습니다. 그리고 임의의 숫자 K가 주어졌을 때 다음과 같이 사람을 없앱니다.
- 1번 번호표 가진 사람을 기준으로 K번째 사람을 없앱니다.
- 없앤 사람 다음 사람을 기준으로 하고 다시 K번째 사람을 없앱니다.
제한 조건
- N과 K는 1이상 1000이하의 자연수입니다.
입출력 예
N | K | return |
5 | 2 | 3 |
코드
import java.util.*;
public class Solution {
public int solution(int []arr) {
int N = 5;
int K = 2;
// 큐를 사용해도 되지만, 직관적인 이해를 위하여 덱을 사용함.
ArrayDeque<Integer> deque = new ArrayDeque<>();
if(N == 1) return 1;
for(int i = 1; i <= N; i ++) {
deque.addLast(i);
}
// 선입 선출
while(deque.size() > 1) {
for(int i = 0; i < K - 1; i ++) {
deque.addLast(deque.pollFirst());
}
deque.pollFirst();
}
return deque.pollFirst();
}
}
728x90
반응형
'개발 > Coding Test - Java' 카테고리의 다른 글
[Java] 프로그래머스 코딩테스트 - 할인 행사 (해시) (0) | 2024.08.15 |
---|---|
[Java] 프로그래머스 코딩테스트 - 두 개의 수로 특정값 만들기 (해시) (0) | 2024.08.15 |
[Java] 프로그래머스 코딩테스트 - 괄호 회전하기 (스택) (0) | 2024.08.12 |
[Java] 프로그래머스 코딩테스트 - 10진수를 2진수로 변환하기 (스택) (0) | 2024.08.10 |
[Java] 프로그래머스 코딩테스트 - 행렬의 곱셈 (0) | 2024.08.10 |