반응형
접근 방법)
이 문제는 배열을 2개를 이용하여 문제를 해결할 수 있다.
배열을 2개를 사용하는 이유는 입력 값에서 주어진 범위 안에서 역순으로 나타낸 배열을 잠시 저장할 수 있는 배열이 필요하기 때문이다.
말만으로 이해가 되지 않으면 아래 코드를 참고해보자.
▷ 역순 배열 저장
for문을 이용하여 arr2 배열에 입력값 범위 내에서 역순으로 만든 다음(저장), arr1에 arr2 모든 배열 값들을 순서대로 똑같이 복사하는 방법을 이용한다.
for(int i = 0; i < m; i++){
int a = sc.nextInt();
int b = sc.nextInt();
for(int j = a-1, k = b-1; j < b; j++, k--){
arr2[j] = arr1[k];
}
for(int j = 0; j < n; j++){
arr1[j] = arr2[j];
}
}
이런 방법을 생각해서 배열 번호와 입력 값에 해당하는 숫자 번호를 일치 시킬 때 머리가 조금 아프다
이 방법을 이용해서 아래와 같이 코드를 완성해 보자.
정답 코드 1)
import java.util.*;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int[] arr1 = new int[n]; // 출력할 배열
int[] arr2 = new int[n]; // 역순으로 정렬한 배열을 잠시 저장할 배열
for(int i = 0; i < n; i++){
arr1[i] = i+1;
}
for(int i = 0; i < n; i++){
arr2[i] = i+1;
}
for(int i = 0; i < m; i++){
int a = sc.nextInt();
int b = sc.nextInt();
for(int j = a-1, k = b-1; j < b; j++, k--){ // 입력값 범위 내에서 역순으로 나타냄
arr2[j] = arr1[k]; // arr2 에 역순 배열 임시 저장
}
for(int j = 0; j < n; j++){
arr1[j] = arr2[j]; // arr2의 역순 배열을 불러옴
}
}
for(int i = 0; i < n; i++){
System.out.print(arr1[i]+" ");
}
}
}
반응형
'Baekjoon 자바 코드 > 1차원 배열' 카테고리의 다른 글
[백준] 11654번 아스키 코드 풀이 코드 (Java 자바) (0) | 2024.08.21 |
---|---|
[백준] 1546번 평균 풀이 코드 (Java 자바) (0) | 2024.08.06 |
[백준] 3052번 나머지 풀이 코드 (Java 자바) (0) | 2024.08.02 |
[백준] 5597번 과제 안 내신 분..? 풀이 코드 (Java 자바) (0) | 2024.07.31 |
[백준] 10813번 공 바꾸기 풀이 코드 (Java 자바) (0) | 2024.07.30 |