Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags more
Archives
Today
Total
관리 메뉴

ultra_dev

두 배열 합치기(two pointers) 본문

알고리즘

두 배열 합치기(two pointers)

ultra_dev 2023. 1. 29. 00:42

1. 두 배열 합치기

설명

오름차순으로 정렬이 된 두 배열이 주어지면 두 배열을 오름차순으로 합쳐 출력하는 프로그램을 작성하세요.

입력

첫 번째 줄에 첫 번째 배열의 크기 N(1<=N<=100)이 주어집니다.

두 번째 줄에 N개의 배열 원소가 오름차순으로 주어집니다.

세 번째 줄에 두 번째 배열의 크기 M(1<=M<=100)이 주어집니다.

네 번째 줄에 M개의 배열 원소가 오름차순으로 주어집니다.

각 리스트의 원소는 int형 변수의 크기를 넘지 않습니다.

출력

오름차순으로 정렬된 배열을 출력합니다.

예시 입력 1

3
1 3 5
5
2 3 6 7 9

예시 출력 1

1 2 3 3 5 6 7 9

📌 while문에서 && 활용 둘 다 true여야 계속 실행되는 것 이용!

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

class Main {
    public ArrayList<Integer> solution(int n, int m, int[] a, int[] b) {
        ArrayList<Integer> answer = new ArrayList<>();
        int p1 = 0, p2 = 0;
        //둘 중 하나만 충족돼도 false되고 멈춤

        //그렇게 돌다가 한쪽이 거짓(즉 배열 끝까지 샥 돌았다면) 다음 while문 돌리기.
        while (p1 < n && p2 < m) {
            if (a[p1] < b[p2]) {
                //++p1이면 먼저 p1 올리고 add하지만 p1++이면 add하고 p1증가.. 후위증감연산자 해야됨!
                answer.add(a[p1++]);
            } else answer.add(b[p2++]);
        }
        //둘 중 하나 배열이 먼저 끝났으면 나머지걸 붙히면 됨
        while (p1 < n) answer.add(a[p1++]);
        while (p2 < m) answer.add(b[p2++]);

        {
            return answer;
        }
    }

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

        }

    }

}

'알고리즘' 카테고리의 다른 글

최대매출(Sliding window)  (0) 2023.02.03
공통 원소 구하기(two pointers)  (0) 2023.01.29
배열.멘토링  (2) 2023.01.29
배열.임시 반장 정하기  (0) 2023.01.29
배열. 봉우리 격차  (0) 2023.01.29
Comments