알고리즘 문제
[C/C++ 백준 2751번] 수 정렬하기 (Silver 5)
새파란 공대생
2020. 8. 10. 11:41
https://www.acmicpc.net/problem/2751
2751번: 수 정렬하기 2
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
www.acmicpc.net
algorithm 헤더파일에 존재하는 sort를 이용하면 바로 풀린다.
#include <cstdio>
#include <algorithm>
int Num[1000001];
using namespace std;
int main(void){
int n;
scanf("%d",&n);
for(int i=0; i<n; i++)
scanf("%d",&Num[i]);
sort(Num, Num + n);
for(int i=0; i<n; i++)
printf("%d\n",Num[i]);
}
재밌는 건 직접 만든 quick sort를 이용해 풀면 시간 초과가 난다는 것이다. 저기있는 sort 알고리즘이 단순 quick sort뿐만 아니라 다양한 정렬의 하이브리드라 훨씬 더 적은 시간을 소모하는것 같다.
+다른 풀이
#include <cstdio>
int Num[2000001]={};
int main(void){
int n, num;
scanf("%d", &n);
for(int i=0; i<n; i++){
scanf("%d",&num);
Num[num+1000000]++;
}
for(int i=0; i<2000001; i++){
if(Num[i]!=0){
for(int j=0; j<Num[i]; j++)
printf("%d\n",i-1000000);
}
}
}