본문 바로가기
온라인저지

[BOJ] 2750번: 수 정렬하기

by plzfday 2018. 7. 26.

https://www.acmicpc.net/problem/2750

정말 여러 가지 방법으로 풀 수 있다. 우선순위 큐, 정렬 등등... (아마 set이나 map으로도 가능할 거다)

우선순위 큐는 기본적으로 큰 수부터 pop 하기 때문에 -를 붙여서 넣어주고 -를 붙여서 빼주면 오름차순으로 pop 할 수 있게 된다.

아니면 우선순위 큐 정의할 때 <functional>의 greater를 사용하면 가능하긴 하지만 귀찮으니까 위의 방법을 애용하자.

// 우선순위 큐로 해결하기
#include <cstdio>
#include <queue>
using namespace std;

priority_queue pq;

int main()
{
    int n;
    scanf("%d", &n);
    for (int i = 0, a; i < n; ++i)
    {
        scanf("%d", &a);
        pq.push(-a);
    }
    for (int i = 0; i < n; ++i)
    {
        printf("%d\n", -pq.top());
        pq.pop();
    }
    return 0;
}

 

// 정렬 사용하기
#include <cstdio>
#include <algorithm>
using namespace std;

int main()
{
    int n, arr[1001];
    scanf("%d", &n);
    for (int i = 0; i < n; ++i)
        scanf("%d", &arr[i]);
    sort(arr, arr + n);
    for (int i = 0; i < n; ++i)
        printf("%d\n", arr[i]);
    return 0;
}

 

'온라인저지' 카테고리의 다른 글

[BOJ] 2747번: 피보나치 수  (0) 2018.07.26
[BOJ] 2562번: 최대값  (0) 2018.07.26
[BOJ] 8393번: 합  (0) 2018.07.26
[BOJ] 2438번: 별찍기 - 1  (0) 2018.07.26
[BOJ] 2439번: 별찍기 - 2  (0) 2018.07.26
[BOJ] 2440번: 별찍기 - 3  (0) 2018.07.26

댓글