문제
문제 이해
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으로 형변환이 필요하다.