• 문제
오름차순으로 정렬된 두개의 숫자 배열을 오름차순으로 합치기
  • 키포인트
two pointer를 사용 할 수 있느냐
  • 풀이
package chapter3;

import java.util.ArrayList;
import java.util.Scanner;

public class 두배열합치기 {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int n1 = in.nextInt();
        int[] arr1 = new int[n1];
        for (int i = 0; i < n1; i++) {
            arr1[i] = in.nextInt();
        }
        int n2 = in.nextInt();
        int[] arr2 = new int[n2];
        for (int i = 0; i < n2; i++) {
            arr2[i] = in.nextInt();
        }

        for(int i : solution(arr1, arr2)) {
            System.out.print(i + " ");
        }

        in.close();

    }

    public static ArrayList<Integer>solution(int[] arr1, int[] arr2) {
        ArrayList<Integer> answer = new ArrayList<>();

        int p1 =0; //arr1 담당 pointer
        int p2 =0; // arr2 담당 pointer

        while(p1 < arr1.length && p2 < arr2.length) {
            if(arr1[p1] <arr2[p2]) {
                answer.add(arr1[p1++]);
            }else {
                answer.add(arr2[p2++]);
            }
        } //여기까지 진행하면 배열이 더 긴쪽의 값은 덜 들어감

        //남은 배열값 털어주기
        while(p1 < arr1.length) answer.add(arr1[p1++]);
        while(p2 < arr2.length) answer.add(arr2[p2++]);

        return answer;
    }

}

+ Recent posts