알고리즘

백준 11728번 배열 합치기

박카스마시며코딩 2021. 12. 3. 13:45

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의 값이 정렬되있다는 것을 보고 각각의 배열의 포인터를 통해 작은 값을 계속 출력하면 되겠다고 생각하였습니다.  

 

package BOJ;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.function.Function;

public class BOJ_11728 {

    static int n, m;
    static int input[][];

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        Function<String, Integer> stoi = Integer::parseInt;
        n = stoi.apply(st.nextToken());
        m = stoi.apply(st.nextToken());
        st = new StringTokenizer(br.readLine(), " ");
        input = new int[2][];
        input[0] = new int[n];
        input[1] = new int[m];
        for (int i = 0; i < n; i++) {
            input[0][i] = stoi.apply(st.nextToken());
        }
        st = new StringTokenizer(br.readLine(), " ");
        for (int i = 0; i < m; i++) {
            input[1][i] = stoi.apply(st.nextToken());
        }
        int si1 = 0;
        int si2 = 0;
        StringBuilder sb = new StringBuilder();
        while(si1 < n || si2 < m){

            if(si1 == n){
//                System.out.print(input[1][si2++]);
                sb.append(input[1][si2++]);
            } else if(si2 == m){
//                System.out.print(input[0][si1++]);
                sb.append(input[0][si1++]);
            } else if(input[0][si1] < input[1][si2]){
//                System.out.print(input[0][si1++]);
                sb.append(input[0][si1++]);
            }else{
//                System.out.print(input[1][si2++]);
                sb.append(input[1][si2++]);
            }
//            System.out.print(" ");
            sb.append(" ");
//            System.out.printf("%d %d %d %d \n", si1,si2,n,m);
        }
        System.out.println(sb.toString());
    }
}

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

백준 2617번 침투 (JAVA)  (0) 2021.12.05
ALGOSPOT - PICINC (java)  (0) 2021.12.03
백준 11404번 플로이드  (0) 2021.12.02
ALGOSPOT - BOGGLE (java)  (0) 2021.12.01
백준 1103번 게임 (JAVA)  (0) 2021.12.01