본문 바로가기

개발/알고리즘 & 자료구조

백준(BOJ) 11728번 배열 합치기

반응형
#include <iostream>
using namespace std;
 
int main()
{
    int n, m;
    cin >> n>> m;
    int*a, *b;
    a = new int[n];
    b = new int[m];
    for (int i = 0; i < n; i++)
    {
        cin >> a[i];
    }
    for (int j = 0; j < m; j++)
    {
        cin >> b[j];
    }
 
    int *mg=new int[n+m];
    int k = 0, i =0, j =0;
 
    while (i <= n-1&&j <= m-1)
    {
        if (a[i] <= b[j])
        {
            mg[k++] = a[i++];
        }
        else
        {
            mg[k++] = b[j++];
        }
    }
    while (i <= n-1)
    {
        mg[k++] = a[i++];
    }
    while (j <= m-1)
    {
        mg[k++] = b[j++];
    }
 
    for (int k = 0; k < n + m; k++)
    {
        cout << mg[k] << " ";
    }
    cout << endl;
    delete[] mg;
    delete[] a;
    delete[] b;
}

병합정렬(MergeSort)문제입니다.

 

두 배열의 구성요소 값을 비교하여 mg라는 통합병렬 내에 정렬된 상태로 입력시켜주면 되겠습니다.

이때 각 배열의 구성요소 값을 i,j라는 변수이용하여 독립적으로 배열값을 이동시킬수있게합니다.

반응형