boj)1158 - 요세푸스 문제

2020. 9. 14. 16:38PS/boj

import java.io.*;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

public class boj_1158 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        StringTokenizer st = new StringTokenizer(br.readLine());

        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());

        Queue<Integer> q = new LinkedList<>();
        for (int i = 1; i <= n; i++) {
            q.offer(i);
        }

        sb.append("<");
        while (!q.isEmpty()) {
            for (int i = 0; i < m-1; i++) {
                q.offer(q.poll());
            }

            if (q.size() == 1) {
                sb.append(String.valueOf(q.poll()));
            } else {
                sb.append(String.valueOf(q.poll())).append(", ");
            }
        }
        sb.append(">");

        System.out.println(sb.toString());
    }
}

- 큐 자료구조 이용

- 큐에서 m-1번만큼 빼고 넣어주기 반복

- 마지막엔 q.poll(), 사이즈가 1일땐 문자열 따로 처리

 

'PS > boj' 카테고리의 다른 글

boj)10799 - 쇠막대기  (0) 2020.09.14
boj)17413 - 단어 뒤집기 2  (0) 2020.09.14
boj)1406 - 에디터  (0) 2020.09.14
boj)1874 - 스택 수열  (0) 2020.09.13
boj)9012 - 괄호  (0) 2020.09.13