학습 내용/백준 문제풀이

백준 11728 자바 - 배열 합치기

ohksj77 2022. 11. 10. 16:13

https://www.acmicpc.net/problem/11728

 

11728번: 배열 합치기

첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거

www.acmicpc.net

문제

정렬되어있는 두 배열 A와 B가 주어진다. 두 배열을 합친 다음 정렬해서 출력하는 프로그램을 작성하시오.

코드

import java.io.*;
import java.util.Arrays;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String[] nm = br.readLine().split(" ");
        String[] arr1 = br.readLine().split(" ");
        String[] arr2 = br.readLine().split(" ");


        int n = Integer.parseInt(nm[0]);
        int m = Integer.parseInt(nm[1]);

        int[] res = new int[n + m];
        int idx = 0;

        for(int i = 0; i < n; i++) {
            res[idx++] = Integer.parseInt(arr1[i]);
        }
        for(int j = 0; j < m; j++) {
            res[idx++] = Integer.parseInt(arr2[j]);
        }

        Arrays.sort(res);

        for(int k = 0; k < n + m; k++) {
            bw.write(res[k] + " ");
        }

        bw.flush();
        br.close();
        bw.close();

    }

}

풀이

쉽다고 얕보면 안되는게, 그냥 StringTokenizer와 stream으로 풀었다가 시간 초과가 났다. 조심하자. Arrays.sort() 를 제외하고는 다 for문으로 돌려서 풀었다.