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);
}
}
}
'알고리즘 문제' 카테고리의 다른 글
[C/C++ 백준 7344번] 나무 막대 (Gold 5) (0) | 2020.08.10 |
---|---|
[C/C++ 백준 11053번] 가장 긴 증가하는 부분수열 (Silver 2) (0) | 2020.08.10 |
[C/C++ 백준 2609번] 최대공약수와 최소공배수 (Silver 5) (0) | 2020.08.09 |
[C/C++ 백준 2164번] 카드2 (Silver 4) (0) | 2020.08.09 |
[C/C++ 백준 2036번] 수열의 점수 (Silver 1) (0) | 2020.08.07 |