Programming/Algorithm

[Java] 백준 11728 배열 합치기

Yejii 2021. 3. 5. 19:48

 

문제

정렬되어 있는 배열 A와 B가 주어질 때, 

A와 B를 합친 새로운 배열을 정렬된 형태로 출력하는 문제이다. 

A와 B의 가장 작은 값을 비교하여 더 작은 값을 새로운 배열에 추가하고 인덱스를 하나 증가시키는 방식을 사용한다.

 

 

풀이

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());

        int[] A = new int[N];
        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < N; i++) {
            A[i] = Integer.parseInt(st.nextToken());
        }
        int[] B = new int[M];
        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < M; i++) {
            B[i] = Integer.parseInt(st.nextToken());
        }

        int[] res = new int[N + M];
        int idx1 = 0, idx2 = 0, index = 0;
        while (idx1 < N && idx2 < M){
            if (A[idx1] <= B[idx2]){
                res[index++] = A[idx1++];
            } else {
                res[index++] = B[idx2++];
            }
        }

        while(idx1 < N){
            res[index++] = A[idx1++];
        }
        while(idx2 < M){
            res[index++] = B[idx2++];
        }

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < N + M; i++) {
            sb.append(res[i]).append(" ");
        }
        System.out.println(sb);
    }
}

 

 

 

채점결과