티스토리 뷰
728x90
문제
정렬되어있는 두 배열 A와 B가 주어진다. 두 배열을 합친 다음 정렬해서 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000)
둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거나 같은 정수이다.
출력
첫째 줄에 두 배열을 합친 후 정렬한 결과를 출력한다.
코드
#include <iostream>
using namespace std;
int N;
int M;
int A[1000001];
int B[1000001];
int main()
{
int a, b;
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> N >> M;
for (a = 0; a < N; a++)
cin >> A[a];
for (b = 0; b < M; b++)
cin >> B[b];
a = 0;
b = 0;
while (a < N && b < M)
{
if (A[a] < B[b])
cout << A[a++] << " ";
else
cout << B[b++] << " ";
}
while (a < N)
cout << A[a++] << " ";
while (b < M)
cout << B[b++] << " ";
cout << "\n";
return 0;
}
이미 정렬되어 있기 때문에 앞에서부터 차례대로 비교하여 작은 값을 출력하면 된다. 만약 한 배열의 모든 값을 출력했다면 더 이상 비교할 수 없기 때문에 while문을 빠져온 뒤 다른 배열의 나머지 값들을 출력한다.
링크
728x90
'Coding Test > Baekjoon' 카테고리의 다른 글
[백준] 20922번 - 겹치는 건 싫어 / C++ (0) | 2021.04.08 |
---|---|
[백준] 11659번 - 구간 합 구하기 4 / C++ (0) | 2021.04.07 |
[백준] 17779번 - 게리맨더링 2 / C++ (0) | 2021.04.07 |
[백준] 15684번 - 사다리 조작 / C++ (0) | 2021.04.04 |
[백준] 4659번 - 비밀번호 발음하기 / C++ (0) | 2021.04.04 |