BOJ - 11728번_배열 합치기

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


풀이

배열 A, B에서 가장 작은 수끼리 서로 비교한다. 그리고 A, B 각각의 인덱스를 증가시키며 배열의 끝까지 확인한다.


소스코드

#include <bits/stdc++.h>
using namespace std;

int a[1000005];
int b[1000005];
int c[2000005];

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	
	int N, M;
	cin >> N >> M;
	
	for(int i=0; i<N; i++) {
		cin >> a[i];
	}
	for(int i=0; i<M; i++) {
		cin >> b[i];
	}
	
	int ai=0, bi=0;
	for(int i=0; i<N+M; i++) {
		if(ai == N) {
			c[i] = b[bi++];
		}
		else if(bi == M) {
			c[i] = a[ai++];
		}
		else if(a[ai]<b[bi]) {
			c[i] = a[ai++];
		}
		else { // a[ai]>=b[bi]
			c[i] = b[bi++];
		}
	}
	
	for(int i=0; i<N+M; i++) {
		cout << c[i] << ' ';
	}
}