ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 1158번 조세퍼스 문제 큐 활용 풀이 ( Java )
    Problem Solving/Java 2019. 9. 5. 18:11
    반응형

     

     

    1158번: 조세퍼스 문제

    첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)

    www.acmicpc.net

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    import java.io.*;
    import java.util.LinkedList;
    import java.util.Queue;
     
    public class Main {
     
        public static void main(String[] args) throws IOException {
     
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
            // reader writer 생성
     
            String input = br.readLine();
            // 라인 읽어서
     
            String[] arr = input.split(" ");
     
            int count = Integer.parseInt(arr[0]);
            // 총 갯수와
            int term = Integer.parseInt(arr[1]);
            // 텀 세팅
     
            Queue<Integer> queue = new LinkedList<Integer>();
            // 큐 linkedlist로 구현
     
            for (int i = 1; i <= count; i++) {
                queue.offer(i);
            }
            // 1부터 count 까지 큐에 추가
     
            StringBuilder sb = new StringBuilder("<");
            // 스트링 빌더 생성
     
            while (!queue.isEmpty()) {
                // queue가 빌때까지
     
                for (int j = 1; j <= term; j++) {
                    // term 만큼 반복하는데
     
                    if (j != term) {
                        // 마지막이 아닐때는
                        queue.offer(queue.poll());
                        // 맨 앞에 있는 걸 맨 뒤로 돌리고
     
                    } else {
                        // 마지막 일 때는
                        sb.append(queue.poll());
                        // 가장 처음 숫자를 지우면서 sb에 추가
                        sb.append(", ");
                        // 쉼표 찍어주고
                    }
                }
     
            }
     
            String temp = sb.substring(0, sb.length() - 2);
            // 쉼표 듸어쓰기 제거
            sb = new StringBuilder(temp);
     
            sb.append(">");
            // 괄호 닫아주고
     
            bw.write(sb.toString());
            // 출력
            
            br.close();
            bw.flush();
            bw.close();
            // reader와 writer를 닫는다
     
        }
     
    }

     

    자바에서 큐를 실제로 써본 건 처음이었는데

    구현부터 명령어까지 계속 헛발질했다 ㅜㅜ ㅋ

    반응형

    댓글

Designed by Tistory.