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
반응형