PS/기타 알고리즘
[백준 / 2751] (C++) 수 정렬하기 2
프레딕
2022. 3. 18. 00:16
728x90
문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
코드
#include <stdio.h>
#include <iostream>
#include <math.h>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> arr;
int main(void) {
int N;
scanf("%d", &N);
for (int i = 0; i < N; ++i) {
int a;
scanf("%d", &a);
arr.push_back(a);
}
sort(arr.begin(), arr.end());
for (int i = 0; i < N; ++i) {
printf("%d\n", arr[i]);
}
}
N의 최대 입력 크기는 10^6이다. 주먹구구 법칙으로 봤을 때(시간복잡도가 1억을 넘어가면 안됨) O(nlogn)의 시간으로 풀어야 한다. 하지만 아직 복잡한 정렬을 다루진 못하니 algorithm헤더 파일의 sort를 사용하였다.
sort(시작점, 끝점)
728x90
반응형