ALGORITHM/백준

[JAVA] 백준 10811 - 바구니 뒤집기

송경훈 2024. 5. 19. 11:52
반응형

📖 문제

 

☑️ 입출력 예제

 

알고리즘❓ 풀어내기❗️

교환할 변수를 저장해 놓을 tmp 변수를 활용하여 풀어낸다.

 

🧑🏻‍💻 풀이 코드

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());

        int[] arr = new int[N];
        for (int i = 0; i < N; i++) {
            arr[i] = i + 1;
        }

        for (int i = 0; i < M; i++) {
            st = new StringTokenizer(br.readLine(), " ");
            int LEFT = Integer.parseInt(st.nextToken()) - 1;
            int RIGHT = Integer.parseInt(st.nextToken()) - 1;

            while (LEFT < RIGHT) {
                int tmp = arr[LEFT];
                arr[LEFT++] = arr[RIGHT];
                arr[RIGHT--] = tmp;
            }
        }
        br.close();

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

arr[i] = i + 1 : 바구니는 1부터 시작하므로 i + 1 한 값을 배열의 원소에 대입한다.
while 문 : LEFT 가 RIGTH보다 작아질 때 까지 역순으로 만드는 과정을 반복한다.