[백준] 10812번 바구니 순서 바꾸기 Java 문제 풀이

2023. 3. 15. 18:06알고리즘/백준

728x90
반응형

문제풀이

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

interface Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        StringTokenizer st;
        String[] input = br.readLine().split(" ");
        int N = Integer.parseInt(input[0]), M = Integer.parseInt(input[1]);
        List<Integer> list = new ArrayList<Integer>();

        for(int i=0; i< N; i++) {
            list.add(i+1);
        }

        int i, j, k;
        for(int a=0; a < M; a++) {
            input = br.readLine().split(" ");
            i = Integer.parseInt(input[0]);
            j = Integer.parseInt(input[1]);
            k = Integer.parseInt(input[2]);

            int val = list.get(i-1);
            int end = list.get(k-1);

            while(val != end) {
                list.remove(i-1);
                list.add(j-1, val);
                val = list.get(i-1);
            }
        }

        for(int a=0; a< N; a++) {
            sb.append(list.get(a) + " ");
        }

        System.out.println(sb);
    }
}

i 부터 k 까지의 값들을 모두 j에 있는 값 뒤로 보내면 됩니다.

 

값 하나씩 뒤로 보냅니다.

 

i 위치에 있는 값을 val에 저장하고, 반복을 종료할 값을 end에 저장합니다.

 

i 위치에 있는 값을 삭제해 주고 그 값을 j 위치에 넣어줍니다.

마지막으로 다시 i 위치에 있는 값을 val에 저장합니다.

 

 

 

 

출처 : https://www.acmicpc.net/problem/10812

 

10812번: 바구니 순서 바꾸기

도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 순서대로 적혀져 있다. 바구니는 일렬로 놓여져 있고, 가장 왼쪽 바구니를 1번째 바구니, 그 다음 바구니를 2

www.acmicpc.net

 

728x90
반응형