복잡하니 종이에다먼저 적어보았다.(#은 특정 반복문 단계를 뜻한다)
1. 반복횟수 먼저 살펴보자
짝수인 경우와 홀수인경우 모두 포용할 수 있다.
(홀수는 대신 중간숫자가 중간숫자로 스스로바뀌는 의미없는 연산이 한번 있음)
2. 바꿀 숫자를 어떻게 가르킬까? -> count 써보자.
앞에서 시작하는 인덱스는 start + count로 표현하고
뒤에서 앞으로가는 인덱스는 end-count로 표현하자
package baek_10811;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Basket2
{
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()), M = Integer.parseInt(st.nextToken());
int[] list = new int[N];
for(int i=0 ; i<list.length;i++)
{
list[i] = i+1;
}
for( int i = 0; i < M ; i++ )
{
st = new StringTokenizer(br.readLine());
int start = Integer.parseInt(st.nextToken())-1,end = Integer.parseInt(st.nextToken())-1;
//System.out.println("end : " + end); 디버그 코드
int count =0;
for(int j=0 ; j < (end-start)/2 + 1 ; j++)
{
int temp = list[ start+count ];
list[ start+count ] = list[ end-count ];
list[ end-count ] = temp;
count ++;
}
//System.out.println("count : "+count); 디버그 코드
}
for(int i=0;i<list.length;i++)
{
System.out.print(list[i]+" ");
}
}
}