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
반응형
'PS > 기타 알고리즘' 카테고리의 다른 글
[백준 / 11650] (C++) 좌표 정렬하기 (0) | 2022.06.19 |
---|---|
[백준 / 1427] (C++) 소트인사이드 (0) | 2022.03.26 |
[백준 / 2108] (C++) 통계학 (2) | 2022.03.20 |
[백준 / 10989] (C++) 수 정렬하기 3 (0) | 2022.03.18 |
[백준 / 2750] (C++) 수 정렬하기 (0) | 2022.03.18 |