Today
-
Yesterday
-
Total
-
  • 백준: 요세푸스 문제
    코딩테스트 문제 풀이/백준 2023. 11. 20. 00:01

    문제

    내 코드

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.LinkedList;
    import java.util.StringTokenizer;
    
    public class Main {
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            StringTokenizer sz = new StringTokenizer(br.readLine());
            int N = sz.hasMoreTokens() ? Integer.parseInt(sz.nextToken()) : 0;
            int K = sz.hasMoreTokens() ? Integer.parseInt(sz.nextToken()) : 0;
    
            LinkedList<Integer> list = new LinkedList<>();
            int cnt = 0;
            while (cnt < N) {
                list.add(++cnt);
            }
    
            cnt = 0;
            StringBuffer sb = new StringBuffer("<");
            while (cnt < N) {
                for (int i = 1; i < K; i++) {
                    list.addLast(list.pop());
                }
                sb.append(list.pop() + ", ");
                cnt++;
            }
            System.out.println(sb.replace(sb.length() - 2, sb.length(), ">"));
        }
    }

    1. LinkedList 만들고 기본값 넣기

    LinkedList<Integer> list = new LinkedList<>();
    int cnt = 0;
    while (cnt < N) {
        list.add(++cnt);
    }

    2. 결과 만들 변수 생성

    // cnt : 몇번 제거했는지 카운팅
    cnt = 0;
    
    // 결과값 출력할 StringTokenizer
    StringBuffer sb = new StringBuffer("<");

    3. 결과 도출

    // 제거한 숫자가 N과 같아질때까지 반복
    while (cnt < N) {
    	// N이 7이고 K가 3이면 
        // 1 2 건너뛰고 3 제거, 
        // 4 5 건너뛰고 6 제거 이런식으로 되어서 
        // list에서 k-1만큼 건너뛰는 반복문
        for (int i = 1; i < K; i++) {
            list.addLast(list.pop());
        }
        
        // 출력할 결과값에 제거할 숫자 입력
        sb.append(list.pop() + ", ");
        cnt++; // 제거 후 카운팅 1증가
    }

    '코딩테스트 문제 풀이 > 백준' 카테고리의 다른 글

    행성 X3  (0) 2023.11.21
    백준 : 힙 정렬2  (0) 2023.11.21
    백준: 최소, 최대  (0) 2023.11.20
    백준 : 회전하는 큐  (0) 2023.11.20
    백준 25556번 : 포스택  (0) 2023.11.20

Designed by Tistory / Custom by 얼거스