본문 바로가기
프로그래밍/백준 알고리즘 코드

[백준] 10811번 JAVA - 바구니 뒤집기 (1차원 배열)

by 졸린이 2023. 6. 21.
반응형

1부터 n번의 번호를 가진 바구니가 있고

바구니를 역순으로 정렬할 건데 몇 번 반복할 건지 m을 입력하고 i~j까지의 순서를 역순으로 정렬한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.util.Scanner;
 
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(); //바구니 개수
        int m = sc.nextInt(); //바구니 역순 정렬 횟수
        
        int arr[] = new int[n + 1]; // 바구니 (1~n)
       
        for(int i=1; i<=n; i++) {
            arr[i] = i;
        }
        
        for(int k=0; k<m; k++) {
            int i = sc.nextInt();
            int j = sc.nextInt();
 
            for(int h=i; h<=j; h++) {
                int nn = j--;
 
                int tmp = arr[h];
                arr[h] = arr[nn];
                arr[nn] = tmp;
            }
        }
        
        for(int i=1; i<=n; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}
cs

 

line15 : i 부터 j까지 역순으로 정렬을 m번 반복한다.

line19, 20 : i ~ j 반복문을 돌리고 nn에 j를 넣고 -- 한다.

(예를 들어 i j가 1 4 면 1과 4의 위치를 바꾸면 2 3만 변경하면 되니 4까지 안와도 되므로 --)

line22 ~ 24 : tmp를 이용한 변수 위치 변경

m번 반복하고 출력하면 끝난다.

 

머리로 한눈에 안들어와서 헷갈리는 경우엔 컴퓨터가 된 것 마냥 직접 변수의 값을 넣어보면서 손코딩을 해보면 이해가 잘된다.

반응형

댓글