Written by JS970
on
on
2751 - 수 정렬하기 2
- 난이도: 실버 5
- 날짜: 2023년 2월 4일
- 상태: Correct
- 추가 검토 여부: Yes
solution
- 입력받은 숫자를 오름차순으로 정렬하기만 하면 된다.
- priority_queue를 사용하여 정렬하였다.
- 다른 사람의 해답을 보니 algorithm헤더의 sort함수를 이용하여 문제를 훨씬 간단하게 해결하였다.
code
#include <iostream>
#include <queue>
using namespace std;
int main()
{
int N;
cin >> N;
int * arr = new int[N];
priority_queue<int, vector<int>, greater<int>> pq;
for(int i = 0; i < N; i++)
{
scanf("%d", &arr[i]);
pq.push(arr[i]);
}
for(int i = 0; i < N; i++)
{
printf("%d\n", pq.top());
pq.pop();
}
return 0;
}
ref
-
sort를 활용한 풀이
#include <iostream> #include <algorithm> using namespace std; int main() { int n; scanf("%d",&n); int num[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]); }
sort()
- c++의 algorithm헤더에 정의되어 있는 메소드이다.
- 기본적으로 배열에 대해 오름차순 정렬을 수행한다.
- 배열의 시작점 주소와 마지막 주소+1을 인자로 적으면 정렬이 완료된다.
- 10개의 원소가 있는 배열 a를 정렬한다면 다음과 같이 입력한다.
- sort(a, a+10);
- priority_queue와 마찬가지로 compare함수를 만들어서 정렬 순서를 설정할 수 있다. 이때 정렬 순서를 나타내는 compare는 sort함수의 세 번쩨 인자로 입력된다.