본문 바로가기
Programing/알고리즘

백준 10811번 : 바구니 뒤집기 (Java)

by 아주노란콩 2024. 12. 10.

백준 10811번 바구니 뒤집기

 

문제

 

문제 이해 

1. 첫번째 라인 n 은 바구니 갯수, m 은 역순 정렬 횟수

2. i ~ j 까지를 역순 으로 정렬

3. 바구니에 담긴 번호 출력

 

코드
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class Main {
   public static void main(String [] args) throws IOException {
       BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
       BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out) );
       StringTokenizer st = new StringTokenizer(br.readLine());
       int n = Integer.parseInt(st.nextToken());
       int m = Integer.parseInt(st.nextToken());

       int [] arr = new int[n];
       int left, right;
       int temp;

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

       for(int j = 0 ; j < m ; j++) {
           st = new StringTokenizer(br.readLine());

           left = Integer.parseInt(st.nextToken()) - 1;
           right = Integer.parseInt(st.nextToken()) - 1;

           while(left < right) {
               temp = arr[left];
               arr[left++] = arr[right];
               arr[right--] = temp;
           }
       }
	   // 변경 후
       for(int num : arr) {
           bw.write(num+" ");
       }
       
       //변경 전
       for(int i = 0 ; i < n ; i++){
       	  bw.write(arr[i] + " ");
       }

       bw.flush();
       bw.close();
       br.close();
   }
}

 

성능을 위해 StringBufferedReader, StringBufferedWriter 를 사용했다.

 

TIP

BuffereWriter 를 사용할때, bw.write(int) 출력시, int 타입을 Integer.toString() 으로 형변환을 해주면, 성능이 더 빠르다는걸 알 수 있었다.

 

// int +"" 로 형변환
for(int num : arr) {
    bw.write(Integer.toString(num +" ");
}

// Integer.toString() 으로 형변환
for(int num : arr) {
    bw.write(Integer.toString(num)+" ");
}

 

 

+ BuffereWriter를 사용할때 정수형을 출력하게 되면 아스키코드가 나온다. 따라서 bw 에 정수형을 출력하고 싶다면 String으로 형변환이 필요하다.