코드 공부
백준 2751번 - c++
유스베리이
2023. 5. 9. 22:23
S[i] = stoi(A.substr(i,1)); // 문자열 받아서 1자리씩 배열에 저장
수 정렬하기
퀵 정렬을 이용하여 정렬하는 방법을 생각했음. 하지만 시간 초과...
#include <iostream>
using namespace std;
int arr[1000001];
void quickSort(int arr[], int left, int right) {
int i = left, j = right;
int tmp;
int pivot = arr[(left + right) / 2];
// Partition
while (i <= j) {
while (arr[i] < pivot)
i++;
while (arr[j] > pivot)
j--;
if (i <= j) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j--;
}
}
// Recursion
if (left < j)
quickSort(arr, left, j);
if (i < right)
quickSort(arr, i, right);
}
int main()
{
int N;
cin >> N;
if (N < 0 || N>1000000)
{
return 0;
}
for (int i = 0; i < N; i++)
{
cin >> arr[i];
} // 배열에 저장
quickSort(arr, 0, N - 1);
for (int i = 0; i < N; i++)
{
cout << arr[i] << endl;
}
return 0;
}
찾아보니 c++ 안에 내장함수 sort() 가 있다는 것을 알았다.
헤더파일인 <algorithm> 을 추가해 sort( 시작 부분, 끝부분) 을 통해 간단하게 수를 정렬할 수 있었다.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
int num, tmp;
vector<int> v;
cin >> num;
for (int i = 0; i < num; i++)
{
cin >> tmp;
v.push_back(tmp);
}
sort(v.begin(), v.end());
for (int i = 0; i < num; i++)
cout << v[i] << '\n';
}