문제
풀이 방법
- Queue
- k번째 수가 되기 직전까지 맨 앞의 원소를 꺼내오고(poll) 꺼내온 원소들을 맨 뒤로 넣는다.(offer)
- k번째 수는 꺼내서(poll) 출력한다.
- List
- k값을 매번 k씩 증가시켜 해당 원소를 삭제하면서 그 값을 출력한다.
- 이때, 리스트의 시작은 0부터 이므로 k-1이며 참조하려는 인덱스가 참조 범위보다 커질 수 있으므로 현재 리스트의 크기를 나눈 나머지 값으로 증가시켜야 한다.
코드
👇🏻 Queue
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
Queue<Integer> q = new LinkedList<>();
StringBuilder sb = new StringBuilder();
for(int i = 1; i<=n; i++){
q.add(i);
}
sb.append("<");
while(q.size()>1){
for(int i=0; i<k-1; i++){
int val = q.poll();
q.offer(val);
}
sb.append(q.poll()).append(", ");
}
sb.append(q.poll()).append(">");
System.out.println(sb);
}
}
👇🏻 List
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
int index = 0;
List<Integer> list = new ArrayList<>();
for (int i = 1; i <= n; i++) {
list.add(i);
}
sb.append("<");
while (list.size() > 1) {
index = (index + (k - 1)) % list.size();
sb.append(list.remove(index)).append(", ");
}
sb.append(list.remove(index)).append(">");
System.out.println(sb);
}
}
'코딩테스트' 카테고리의 다른 글
[백준 / 실버5] 5555 : 반지 (JAVA) (0) | 2023.03.21 |
---|---|
[프로그래머스 / lv 1] 같은 숫자는 싫어 (JAVA_해시) (0) | 2023.03.19 |
[백준 / 실버5] 2581 : 소수 (JAVA) (0) | 2023.03.17 |
[백준 / 실버5] 1251 : 단어 나누기 (JAVA) (0) | 2023.03.17 |
[백준 / 브론즈1] 1236 : 성 지키기 (JAVA) (0) | 2023.03.17 |