카테고리 없음

[알고리즘] 두 배열 합치기 with Java, 포인터

VIPeveloper 2022. 3. 9. 23:07
728x90
반응형

오늘은 대선이라 휴식했다. 공부시간이 부족했다.

 

오늘 배운 것

1. 문제 풀이

. 알고리즘적으로 어떻게 푸는 것인지 배웠다. 나는 단순히 배열을 합치고 sort하면 된다고 생각했는데, 알고리즘 적으로 개선된 알고리즘은 아래와 같다.

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

public class Main {

    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = kb.nextInt();
        }
        int m = kb.nextInt();
        int[] arr2 = new int[m];
        for (int i = 0; i < m; i++) {
            arr2[i] = kb.nextInt();
        }
        solution(arr,arr2);
    }

    private static void solution(int[] arr, int[] arr2) {
        int p1=0,p2=0;
        ArrayList<Integer> answer = new ArrayList<>();
        while(p1 < arr.length && p2 < arr2.length){
            if(arr[p1] < arr2[p2]){
                answer.add(arr[p1++]);
            }else{
                answer.add(arr2[p2++]);
            }
        }
        while (p1<arr.length){
            answer.add(arr[p1++]);
        }
        while (p2<arr2.length){
            answer.add(arr2[p2++]);
        }
        for (int i = 0; i < answer.size(); i++) {
            System.out.print(answer.get(i)+" ");
        }
    }

}
728x90
반응형