728x90
반응형
https://www.acmicpc.net/problem/11728
11728번: 배열 합치기
첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거
www.acmicpc.net


두가지 방법으로 풀었는데 표준 라이브러리를 사용하는 방법과 퀵소트를 구현하는 방법으로 풀었다
표준 라이브러리 이용
#include <bits/stdc++.h>
using namespace std;
int n, m;
vector<int> a;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m;
for(int i=0; i<n; i++){
int x;
cin >> x;
a.push_back(x);
}
for(int i=0; i<m; i++){
int x;
cin >> x;
a.push_back(x);
}
sort(a.begin(), a.end());
for(int i : a){
cout << i << ' ';
}
return 0;
}
퀵소트 구현
#include <bits/stdc++.h>
using namespace std;
int n, m;
vector<int> a;
void quickSort(vector<int>& target, int start, int end){
if(start >= end) return;
int pivot = start;
int left = start + 1;
int right = end;
while(left <= right){
while(left<=end && a[left]<=a[pivot]) left++;
while(right>start && a[right]>=a[pivot]) right--;
if(left > right) swap(a[pivot], a[right]);
else swap(a[left], a[right]);
}
quickSort(target, start, right-1);
quickSort(target, right+1, end);
}
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m;
for(int i=0; i<n; i++){
int x;
cin >> x;
a.push_back(x);
}
for(int i=0; i<m; i++){
int x;
cin >> x;
a.push_back(x);
}
quickSort(a, 0, a.size()-1);
for(int i : a){
cout << i << ' ';
}
return 0;
}
728x90
반응형
'알고리즘' 카테고리의 다른 글
[백준/재귀/C++] 11729번 하노이 탑 이동 순서 (0) | 2023.01.05 |
---|---|
[백준/분할정복/C++] 1780번 종이의 개수 (0) | 2023.01.04 |
[이코테/계수정렬/C++] 계수정렬 (0) | 2023.01.03 |
[이코테/정렬/C++] 삽입정렬 (0) | 2023.01.03 |
[이코테/정렬/C++] 선택 정렬 (0) | 2023.01.03 |