[백준] 10811번 바구니 뒤집기 Java 문제 풀이

2023. 3. 14. 18:01알고리즘/백준

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;
        int[] param = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
        int N = param[0], M = param[1];
        int[] arr = new int[N];
        for(int i=0; i<N; i++) {
            arr[i] = i+1;
        }

        for(int idx=0; idx<M; idx++) {
            String[] input = br.readLine().split(" ");
            int i = Integer.parseInt(input[0])-1, j = Integer.parseInt(input[1])-1;
            while(i<=j) {
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
                i++;
                j--;
            }
        }

        for(int i=0; i<N; i++) {
            sb.append(arr[i] + " ");
        }
        System.out.print(sb);
    }
}

둘째 줄부터는 각 줄마다 입력받은 i와 j는 바로 배열에 쓰기 위해 1씩 빼줬습니다.

 

arr[i] 배열 값과 arr[j] 배열 값을 바꾸고, arr[i+1] 배열 값과 arr[j-1] 배열 값을 바꾸고, arr[i+2] 배열 값과 arr[j-2] 배열 값을 바꿔주면 됩니다.

 

i>j일 경우 이미 다 바꿨으므로 반복을 종료합니다.

 

 

 

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

 

10811번: 바구니 뒤집기

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

www.acmicpc.net

 

728x90
반응형