카테고리 없음

25. 두 배열 합치기

누리는 귀여워 2024. 12. 15. 22:09

import java.util.*;
class Main {    
    public ArrayList<Integer> solution(int n, int[] arr1, int m, int[] arr2) {
        ArrayList<Integer> answer = new ArrayList<>();
        int p1 = 0, p2 = 0;
        // n이 p1보다 크거나 m이 p2보다 크거나 &&
        while(p1 < n && p2 < m) {
        	// p2가 크면 p1을 넣고 ++
            if(arr1[p1] < arr2[p2]) {
                answer.add(arr1[p1++]);
            } else {
                answer.add(arr2[p2++]);
            }
        }
        // 위 반복문에서 arr1, arr2의 길이가 다르면 짧은쪽에서 종료됨
        // 남은 배열의 값을 answer에 추가
        while(p1 < n) {
            answer.add(arr1[p1++]);
        }
        while(p2 < m) {
            answer.add(arr2[p2++]);
        }
        return answer;
    }

    public static void main(String[] args){
        Main T = new Main();
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();
        int[] arr1 = new int[n];
        for(int i = 0; i < n; i++) {
            arr1[i] = kb.nextInt();
        }
        int m = kb.nextInt();
        int[] arr2 = new int[m];
        for(int i = 0; i < m; i++) {
            arr2[i] = kb.nextInt();
        }
        for(int x : T.solution(n, arr1, m, arr2)) {
            System.out.print(x + " ");
        }
    }
}

 

import java.util.*;
class Main {    
    public ArrayList<Integer> solution(int n, int[] arr1, int m, 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++]);
            } else {
                answer.add(arr2[p2++]);
            }
        }
        while(p1 < n) {
            answer.add(arr1[p1++]);
        }
        while(p2 < m) {
            answer.add(arr2[p2++]);
        }
        return answer;
    }

    public static void main(String[] args){
        Main T = new Main();
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();
        int[] arr1 = new int[n];
        for(int i = 0; i < n; i++) {
            arr1[i] = kb.nextInt();
        }
        int m = kb.nextInt();
        int[] arr2 = new int[m];
        for(int i = 0; i < m; i++) {
            arr2[i] = kb.nextInt();
        }
        for(int x : T.solution(n, arr1, m, arr2)) {
            System.out.print(+ " ");
        }
    }
}