백준/분할 정복
(c++)백준 11728번: 배열 합치기
Nimgnoej
2020. 6. 25. 00:09
https://www.acmicpc.net/problem/11728
11728번: 배열 합치기
첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거��
www.acmicpc.net
[풀이]
mergesort의 merge를 차용하여 풀었다.
cin, cout을 쓰면 시간 초과가 떠서 printf와 scanf를 사용하였다.
#include <iostream>
using namespace std;
#define Max 1000000
int N, M;
int A[Max], B[Max];
int C[Max+Max];
void solution() {
cin >> N >> M;
for (int i = 0; i < N; i++) {
scanf("%d", &A[i]);
}
for (int i = 0; i < M; i++) {
scanf("%d", &B[i]);
}
int i = 0, j = 0, k = 0;
while (i < N && j < M) {
if (A[i] < B[j]) {
C[k++] = A[i++];
}
else {
C[k++] = B[j++];
}
}
while (i < N) {
C[k++] = A[i++];
}
while (j < M) {
C[k++] = B[j++];
}
for (int i = 0; i < N + M; i++) {
printf("%d ", C[i]);
}
printf("\n");
}
int main() {
solution();
return 0;
}