BOJ - 11728번_배열 합치기 (C++)
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] << ' ';
}
}