백준 10811번

김경욱·2025년 6월 23일

백준

목록 보기
1/121

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);

int x = in.nextInt();
int[] width = new int[x];
int temp;
int y = in.nextInt();


for (int i = 0; i < x ; i++)
  {
    width[i] = i+1;   // width[0] = 1 width[1] = 2 width[2] =3
  }

for (int i = 0; i < y; i++)
  {
    int a = in.nextInt();
    int b = in.nextInt();    // 
    

   int left = a-1;
    int right = b-1;

    while (left < right)
      {
        temp = width[left];
          width[left] = width[right];
        width[right] = temp ;
        left ++;
        right --;
      }
    
  }

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

}
}

처음에는 while이 아닌 for문으로 풀려 했지만 양쪽에서 가운데로 오는 포인터를 사용해야 해서 while 문을 바꿨다.
두번째로는 left,right변수를 선언하지 않고 배열에 바로 a,b를 넣어 배열의 범위가 [0~4]가 아닌 [1~5]로 만들었다.

for문만 고수하지 말 것, 양쪽에서 가운데로 오는 포인터를 이용할 것!

0개의 댓글