두 배열 합치기 / 공통원소구하기

-·2023년 12월 15일
0

Inflearn-basicTest

목록 보기
13/27

🗒️Arrays.sort(array) (오름차순)

"기본형타입" 배열을 받아 오름차순으로 정렬해준다.

🗒️Arrays.sort(array, Collections.reverseOrder()) (내림차순)

"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());
profile
신입 개발자의 개인 공부 공간입니다

0개의 댓글