[백준]#11728 배열 합치기

SeungBird·2020년 8월 27일
0

⌨알고리즘(백준)

목록 보기
75/401
post-custom-banner

문제

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

입력

첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000)

둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거나 같은 정수이다.

출력

첫째 줄에 두 배열을 합친 후 정렬한 결과를 출력한다.

예제 입력 1

2 2
3 5
2 9

예제 출력 1

2 3 5 9

예제 입력 2

2 1
4 7
1

예제 출력 2

1 4 7

예제 입력 3

4 3
2 3 5 9
1 4 7

예제 출력 3

1 2 3 4 5 7 9

풀이

이 문제는 배열 2개를 하나로 합치는 문제여서 각 배열에 index 변수를 주고 비교하며 작은 것부터 출력해서 풀었다.

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

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] str = br.readLine().split(" ");
        int N = Integer.parseInt(str[0]);
        int M = Integer.parseInt(str[1]);
        int[] A = new int[N];
        int[] B = new int[M];
        StringBuilder result = new StringBuilder();

        for(int i=0; i<2; i++) {
            String[] input = br.readLine().split(" ");
            if(i==0) {
                for(int j=0; j<N; j++)
                    A[j] = Integer.parseInt(input[j]);
            }
            else {
                for(int j=0; j<M; j++)
                    B[j] = Integer.parseInt(input[j]);
            }
        }

        int a=0;
        int b=0;

        while(true) {
            if(a==N && b==M)
                break;

            if(a==N && b!=M) {
                while(b!=M) {
                    result.append(B[b]+" ");
                    b++;
                }
            }

            else if(a!=N && b==M) {
                while(a!=N) {
                    result.append(A[a]+" ");
                    a++;
                }
            }

            else if(a!=N && b!=M) {
                if(A[a]<=B[b]) {
                    result.append(A[a]+" ");
                    a++;
                }

                else {
                    result.append(B[b]+" ");
                    b++;
                }
            }
        }
        System.out.println(result);
    }
}
profile
👶🏻Jr. Programmer
post-custom-banner

0개의 댓글