알고리즘

[BOJ] 배열합치기

winwin-k9 2024. 1. 13. 22:41

문제

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

풀이

문제 자체는 어렵지 않았다.
두개의 배열을 받아서 각자의 인덱스포인터를 둔 뒤, 순서를 비교하여 오름차순 순으로 값을 받으면 된다.

두가지 방식으로 구현이 가능했다.
배열을 모조리 받은 뒤에 정렬을 시키는 방법과
인덱스 값을 하나씩 받는 방법이다.

문제의 시간이 빡빡한지 시간에 대한 여유가 부족하였다.
따라서 StringTokenizer와 출력을 한번만 하도록 구현하는 등 신경쓸 것들이 있었다.

import java.util.*;
import java.lang.*;
import java.io.*;

class Main {
    public static void main(String[] args) throws Exception {
        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 [] arr = new int[n+m];  //정렬할 배열 초기화 

        st = new StringTokenizer(br.readLine());  //첫번째 배열 

        for (int i = 0; i < n; i++) { 
            arr[i]= Integer.parseInt(st.nextToken());
        }
        st = new StringTokenizer(br.readLine()); //두번째 배열 

        for (int i = 0; i < m; i++) {
            arr[i+n] = Integer.parseInt(st.nextToken()); 
        }
        Arrays.sort(arr); //정렬 

        StringBuilder sb = new StringBuilder();

        for(int r : arr) {
            sb.append(r+" "); 

        }
        System.out.println(sb);
    }
}

https://github.com/Win-9/Algorism/tree/main/BOJ/%EB%B0%B0%EC%97%B4%ED%95%A9%EC%B9%98%EA%B8%B0

728x90