백준 10811번 문제를 자바로 풀어보려 한다.
계속 런타임 에러 떠서 꽤나 화가 났던 문제 ㅎ,,
나는 for문이 편해서 for문을 사용했다
import java.io.*;
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+1];
for(int k=1; k<=N; k++) {
arr[k] = k;
}
for (int k=0; k<M; k++) {
StringTokenizer st2 = new StringTokenizer(br.readLine());
int i = Integer.parseInt(st2.nextToken());
int j = Integer.parseInt(st2.nextToken());
for (int m=i; m<j; m++) {
int sub = arr[m];
arr[m] = arr[j];
arr[j] = sub;
j--;
}
}
for (int n=1; n<=N ;n++) {
System.out.print(arr[n]+" ");
}
}
}
while문으로도 풀어 봄
import java.io.*;
import java.util.Arrays;
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+1];
for(int k=1; k<=N; k++) {
arr[k] = k;
}
for (int k=0; k<M; k++) {
StringTokenizer st2 = new StringTokenizer(br.readLine());
int i = Integer.parseInt(st2.nextToken());
int j = Integer.parseInt(st2.nextToken());
while (i<j) {
int sub = arr[i];
arr[i] = arr[j];
arr[j] = sub;
i++;
j--;
}
}
for (int n=1; n<=N ;n++) {
System.out.print(arr[n]+" ");
}
}
}

둘 다 시간은 같았지만 for문이 메모리를 아주 아주 아주 조금 덜 차지함