IT/Algorithm | Coding Test

[백준 1158] [Java] 요세푸스 문제

iamhyeon 2025. 1. 2. 19:54


리스트로 문제 해결해보기

 


import java.util.ArrayList;
import java.util.List;

public class BJ1158_요세푸스 {

    public List<Integer> solution (int N, int K) {
        List<Integer> numbers = new ArrayList<>();
        List<Integer> result = new ArrayList<>();
        for(int i=1; i<N+1; i++) {
            numbers.add(i);
        }

        // N개의 요소가 제거될 때까지 이므로 N번 반복
        for (int i=0; i<N; i++) {
            int idx = K%numbers.size();
            result.add(numbers.remove(idx));    // 제거된 요소를 리스트에 추가

            for(int j=0; j<idx; j++) {
                numbers.add(numbers.remove(0)); // 제거된 요소 이전의 요소들을 뒤로 이동
            }
        }
        return result;
    }

    public static void main(String[] args) {
        BJ1158_요세푸스 ex = new BJ1158_요세푸스();
        System.out.println(ex.solution(7,2));
    }
}

 

 

 

 

 

 

 


refer to

메가스터디아이티 이광호쌤

반응형

'IT > Algorithm | Coding Test' 카테고리의 다른 글

[백준 11720] [Java] 숫자의 합  (0) 2025.01.14
배열, 리스트 (Java)  (0) 2025.01.14
[백준 2164] [Java] 카드2  (0) 2025.01.08
스택 Stack, 큐 Queue, 덱 Deque  (1) 2025.01.05
Stream vs IntStream  (0) 2025.01.04