반응형
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번 반복하고 출력하면 끝난다.
머리로 한눈에 안들어와서 헷갈리는 경우엔 컴퓨터가 된 것 마냥 직접 변수의 값을 넣어보면서 손코딩을 해보면 이해가 잘된다.
반응형
'프로그래밍 > 백준 알고리즘 코드' 카테고리의 다른 글
[백준] 2743번 JAVA - 단어 길이 재기 (문자열) (0) | 2023.07.25 |
---|---|
[백준] 27866번 JAVA - 문자와 문자열 (문자열) (0) | 2023.06.22 |
[백준] 10813번 JAVA - 공 바꾸기 (1차원 배열) (0) | 2023.06.20 |
[백준] 10810번 JAVA - 공 넣기 (1차원 배열) (0) | 2023.06.07 |
[백준] 10807번 JAVA - 개수 세기 (반복문) (0) | 2023.05.22 |
댓글