algorithm/Two Pointer
[C++] BOJ 11728 배열 합치기
gartenhh
2021. 5. 14. 03:32
문제
https://www.acmicpc.net/problem/11728
11728번: 배열 합치기
첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거
www.acmicpc.net
코드
#include<iostream>
using namespace std;
int n, m, arrA[1000001], num;
int main() {
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> n >> m;
for (int i = 0; i < n; i++)
cin >> arrA[i];
int idx = 0;
for (int i = 0; i < m; i++) {
cin >> num;
while (arrA[idx] < num && idx < n) {
cout << arrA[idx] << ' ';
idx++;
}
cout<< num<< ' ';
}
for (; idx < n; idx++) {
cout<< arrA[idx]<<' ';
}
}
풀이방법
배열 A의 값을 입력받아 저장한 뒤, 배열 B의 값을 입력받으며 배열 A와 비교해 더 작은 수를 차례대로 출력한다.
고민과정
처음에 반복문이 아니라 그냥 조건문을 이용해서 원하던 결과가 나오지 않았다. 그리고 더 작은 수를 바로 출력하지 않고 또다른 배열에 저장했다가 출렸했더니 시간초과가 떴다. idx값이 n을 넘을 경우를 고려하지 않아 틀렸었다.