Java

백준 1158번: 요세푸스 문제

openDeveloper 2023. 3. 18. 01:36

https://www.acmicpc.net/problem/1158

 

1158번: 요세푸스 문제

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

www.acmicpc.net

풀이 접근법: LinkedList()에 1~N만큼 넣고, list size가 0이 될 떄까지 인덱스 값을 특정하여 값을 지우면서 출력함

인덱스 계산하는게 마음대로 되지 않아, 생각보다 오래 걸림..

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {


        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();

        int index = 0;

        LinkedList<Integer> list = new LinkedList<>();

        for (int i = 1; i <= n; i++) {
            list.offer(i);
        }
        System.out.print("<");
        while (!list.isEmpty()) {
            index = (index + (m - 1)) % list.size();
            if(list.size() != 1) {
                System.out.print(list.remove(index) + ", ");
            }else{
                System.out.print(list.remove(index));
            }
        }
        System.out.print(">");

    }
}

queue 에서의 remove는 return으로 boolean을 주지만, LinkedList는 return으로 지우고자 하는 값을 줌

'Java' 카테고리의 다른 글

프로그래머스 : 디스크 컨트롤러  (0) 2023.03.19
프로그래머스: 프린터  (0) 2023.03.18
백준 26008번: 해시 해킹 문제  (1) 2023.03.16
[Java] 백준 10818번: 최소, 최대  (0) 2023.03.15
백준 1021번: 회전하는 큐  (0) 2023.03.14