문제 설명
N 명의 사람이 원 형태로 서 있습니다. 각 사람은 1부터 N까지 번호표를 갖고 있습니다. 그리고 임의의 숫자 K가 주어졌을 때 다음과 같이 사람을 없앱니다.
- 1번 번호표를 가진 사람을 기준으로 하고 다시 K 번째 사람을 없앱니다.
- 없앤 사람 다음 사람을 기준으로 하고 다시 K 번째 사람을 없앱니다.
N과 K가 주어질 때 마지막에 살아있는 사람의 번호를 반환하는 solution()함수를 구현하세요.
제약 조건
- N과 K는 1이상 1000이하의 자연수 입니다.
입출력 예
N | K | return |
---|---|---|
5 | 2 | 3 |
문제 풀이
import java.util.LinkedList;
import java.util.Queue;
public class Java15 {
public static void main(String[] args) {
solution(5,2);
}
public static void solution(int N, int K) {
Queue<Integer>queue = new LinkedList<Integer>();
for(int i=1;i<=N;i++) {
queue.add(i);
}
while(queue.size()!=1) {
for(int j=0;j<K-1;j++) {
queue.add(queue.poll());
}
queue.poll();
}
System.out.println(queue.poll());
}
}
'코딩테스트 > 문제풀이' 카테고리의 다른 글
[ 프로그래머스 ] #42586 : 기능개발 - JAVA (0) | 2025.04.15 |
---|---|
[ 프로그래머스 ] #42839 : 소수 찾기 - JAVA (0) | 2025.04.14 |
[ 프로그래머스 ] #42747 : H-Index - JAVA (0) | 2025.04.07 |
[ 프로그래머스 ] #81303 : 표 편집 - JAVA (0) | 2025.04.05 |
[ 프로그래머스 ] #42587 : 프로세스 - JAVA (1) | 2025.04.05 |