728x90
문제 출처:
1. 코드
#include <iostream>
#include <algorithm>
using namespace std;
int n, m;
int a[1000000];
int b[1000000];
int sum[2000000];
int main() {
scanf("%d %d", &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; //i=a의 인덱스 j=b의 인덱스 k는 합치는 배열의 인덱스
while (i < n && j < m) {
if (a[i] < b[j]) {
sum[k++] = a[i++];
}
else
sum[k++] = b[j++];
}
while (i < n) {
sum[k++] = a[i++];
}
while (j < m) {
sum[k++] = b[j++];
}
for (int i = 0; i < n + m; i++) {
printf("%d ", sum[i]);
}
}
2. 해결 과정
정렬이 이미 되어있다고 알려줬기 때문에 인덱스만 이용해서 문제를 풀 수 있다.
합치는 배열 sum을 생성해서, 입력한 두 배열의 인덱스 값을 비교하고, 배열 값의 크기를 비교해서 sum에 차근차근 넣어주면 된다.
3. 느낀점
이미 정렬되어 있다는 것을 놓쳐서 시간 초과가 났긴 했지만, 인덱스만 사용해서 푸니까 시간 초과문제를 해결할 수 있었다. 문제를 더 꼼꼼하게 읽어야 겠다. 정렬 어려워잉ㅜ
728x90
'공부 자료 > 알고리즘' 카테고리의 다른 글
(C/C++) 백준 11650번- 좌표 정렬하기 (0) | 2021.07.10 |
---|---|
(C/C++) 백준 1181번 - 단어 정렬 (0) | 2021.07.09 |
(C/C++) 백준 11931번 - 수 정렬하기 4 (0) | 2021.07.09 |
(C/C++) 백준 9613번 - GCD 합 (0) | 2021.07.08 |
(C/C++) 백준 11944번 - NN (0) | 2021.07.07 |