정렬되어있는 두 배열이 주어진다. 그렇다면 두 배열의 요소들을 처음부터 비교하여 가장 작은애를 앞에두면서 진행하면 된다.
투포인터 방식으로 A배열의 요소가 가장 작으면 값을 저장해놓고 A배열의 포인터를 뒤로 옮긴다. B배열의 요소가 그 다음으로 작으면 똑같이 한다.
만약 A배열의 포인터가 끝에 다달았다면 이제는 B배열의 요소로만 값을 채우면 된다.
//백준 11728, 배열 합치기
#include <iostream>
int A[1'000'001];
int B[1'000'001];
int main(){
int N, M;
std::cin >> N >> M;
for(int i{0}; i<N; ++i) std::cin >> A[i];
for(int i{0}; i<M; ++i) std::cin >> B[i];
int Aidx{0}; int Bidx{0};
for(int i{0}; i<N+M; ++i){
if(Aidx == N) std::cout << B[Bidx++];
else if(Bidx == M) std::cout << A[Aidx++];
else if(A[Aidx] > B[Bidx]) std::cout << B[Bidx++];
else std::cout << A[Aidx++];
std::cout << ' ';
}
return 0;
}