"기본형타입" 배열을 받아 오름차순으로 정렬해준다.
"Integer타입" 배열을 받아 내림차순으로 정렬해준다.
Integer[] array = {4, 2, 7, 1, 9, 5}; // Integer 배열로 선언해야 함
Arrays.sort(array, Collections.reverseOrder());
int[]로 받은 경우 변환
int[] array = {4, 2, 7, 1, 9, 5};
Integer[] boxedArray = Arrays.stream(array).boxed().toArray(Integer[]::new);
Arrays.sort(boxedArray, Collections.reverseOrder());
✏️ 문제
* 설명
오름차순으로 정렬이 된 두 배열이 주어지면 두 배열을 오름차순으로 합쳐
출력하는 프로그램을 작성하세요.
* 입력
첫 번째 줄에 첫 번째 배열의 크기 N(1<=N<=100)이 주어집니다.
두 번째 줄에 N개의 배열 원소가 오름차순으로 주어집니다.
세 번째 줄에 두 번째 배열의 크기 M(1<=M<=100)이 주어집니다.
네 번째 줄에 M개의 배열 원소가 오름차순으로 주어집니다.
각 리스트의 원소는 int형 변수의 크기를 넘지 않습니다.
* 출력
오름차순으로 정렬된 배열을 출력합니다.
🔍풀이
public ArrayList<Integer> solution(int n, int m, int[] arr1, int[] arr2) {
ArrayList<Integer> answer = new ArrayList<>();
int p1=0, p2=0;
while(p1<n && p2<m){
if(arr1[p1]<arr2[p2]) answer.add(arr1[p1++]); //add하고, 증가
else answer.add(arr2[p2++]);
}
while(p1<n) answer.add(arr1[p1++]);
while(p2<m) answer.add(arr2[p2++]);
return answer;
}
✏️ 문제
* 설명
오름차순으로 정렬이 된 두 배열이 주어지면 두 배열을 오름차순으로 합쳐
출력하는 프로그램을 작성하세요.
* 입력
첫 번째 줄에 첫 번째 배열의 크기 N(1<=N<=100)이 주어집니다.
두 번째 줄에 N개의 배열 원소가 오름차순으로 주어집니다.
세 번째 줄에 두 번째 배열의 크기 M(1<=M<=100)이 주어집니다.
네 번째 줄에 M개의 배열 원소가 오름차순으로 주어집니다.
각 리스트의 원소는 int형 변수의 크기를 넘지 않습니다.
* 출력
오름차순으로 정렬된 배열을 출력합니다.
🔍풀이
public ArrayList<Integer> solution(int n, int m, int[] arr1, int[] arr2) {
ArrayList<Integer> answer = new ArrayList<>();
Arrays.sort(arr1);
Arrays.sort(arr2);
int p1 = 0, p2 = 0;
while(p1 < n && p2 < m){
if(arr1[p1] == arr2[p2]){
answer.add(arr1[p1]);
p1++;
p2++;
}else if(arr1[p1] < arr2[p2]) p1++;
else p2++;
}
return answer;
}
만약 문제가 내림차순이라고 한다면
int[] 배열을 내림차순으로 바꾸는 것은 까다롭다.
따라서 오름차순으로 asnwer에 담은 뒤 arrayList인 answer를 뒤집어준다.
answer.sort(Collections.reverseOrder());