문제 풀러 가기 : https://www.acmicpc.net/problem/11866
이 문제는 Queue 자료구조를 이용하면 매우 간단하다.
K회 반복하는 for문을 돌며 queue에서 값을 꺼내고, 다시 넣기를 반복하다가,
K번째 반복에서는 다시 넣지 않고 출력하기를 반복하면 된다.
이 반복을 queue.size() == 1이 될때 까지 반복하고, 마지막 남은 원소를 출력하고 마무리 한다.
Code
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int k = sc.nextInt();
StringBuilder sb = new StringBuilder();
sb.append("<");
Queue<Integer> queue = new LinkedList<>();
for(int i=1;i<=n;i++){
queue.offer(i);
}
int cnt = 0;
while(queue.size()!=1){
int data = queue.poll();
cnt++;
if(cnt%k == 0){
sb.append(data).append(", ");
}else queue.add(data);
}
sb.append(queue.poll()).append(">");
System.out.println(sb);
}
}
반응형
'자료구조_알고리즘 > 코딩테스트' 카테고리의 다른 글
[백준/JAVA] 5430번 AC / 데크, 자료구조 (0) | 2023.06.07 |
---|---|
[JAVA] 코딩테스트 문제 풀이시 유용한 [ 람다식, 스트림 ] 사용 예제 모음 (0) | 2023.06.07 |
[백준/JAVA] 2805번 : 나무 자르기 (이분탐색) (0) | 2023.06.03 |
[백준/JAVA] 1966번 : 프린터 큐 (0) | 2023.05.19 |
[백준/JAVA] 7568번 덩치 (브루트포스, 구현) (0) | 2023.05.18 |