본문 바로가기
(문제풀이)

백준 11728_배열 합치기

by cogito-new 2023. 6. 5.

List를 이용한 정답 풀이.

각 리스트는 정렬되어 있음.

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

public class Main {

    public static void main(String[] args) {
        //input
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();  // 배열 A의 사이즈
        int M = scanner.nextInt();  // 배열 B의 사이즈

        List<Integer> A = new ArrayList<>();
        for(int i  = 0; i< N; i++){
            int n = scanner.nextInt();
            A.add(n);
        }

        List<Integer> B = new ArrayList<>();
        for(int i = 0; i < M; i++){
            int n = scanner.nextInt();
            B.add(n);
        }

        //logic
        List<Integer> result = new ArrayList<>();

        int i = 0, j= 0; // 배열 A의 인덱스, 배열 B의 인덱스
        while(i < N && j < M){
            int a = A.get(i);
            int b = B.get(j);

            if(a<= b){
                result.add(a);
                i++;
            } else {
                result.add(b);
                j++;
            }
        }
        //인덱스가 남아있는 경우도 고려
        for(; i<N; i++){
            result.add(A.get(i));
        }
        for(; j<M; j++){
            result.add(B.get(j));
        }
        //output
        StringBuilder sb = new StringBuilder();
        for(int e : result){
            sb.append(e + " ");
        }
        System.out.println(sb.toString());


    }

}

 

이전에 풀었던 기록(시간 초과)

import java.util.Arrays;
import java.util.Scanner;

public class Main {
	
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		int arrayA = sc.nextInt();
		int arrayB = sc.nextInt();
		int [] answer = new int [arrayA + arrayB];
		
		for(int i = 0; i< arrayA; i++) {
			answer[i] = sc.nextInt();
		}
		for(int i = arrayA; i< (arrayA + arrayB); i++) {
			answer[i] = sc.nextInt();
		}
		Arrays.sort(answer);
		
		for(int x : answer) {
			System.out.print(x+ " ");
		}
		
	}
}

 

 

반응형