오답노트

[정렬] BOJ 11931번 수 정렬하기 4 본문

C,C++/코딩테스트

[정렬] BOJ 11931번 수 정렬하기 4

권멋져 2022. 6. 6. 20:10
https://www.acmicpc.net/problem/11931
 

11931번: 수 정렬하기 4

첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.

www.acmicpc.net

- 문제 파악

N개의 정수를 내림차순으로 정렬하여 출력하라 (정수는 음수 또는 양수이며 절대값은 1,000,000보다 작거나 같다)

 

- 정답

수 정렬하기 3 과 같은 풀이

#include "bits/stdc++.h"

using namespace std;

int arr[2000002];


int main()
{
    cin.tie(0);
    ios::sync_with_stdio(0);
    
    int n, num;
    cin>>n;
    int nmin = 1000000, nmax = -1000000;
    
    for(int i = 0; i < n ; i++)
    {
        cin>>num;
        
        if(num < 0)
            arr[1000000 - num] = 1;
        else
            arr[num]= 1;
        
        nmin = min(nmin,num);
        nmax = max(nmax,num);
        
    }
    
    for(int i = nmax; i >= nmin ; i--)
    {
        if(i < 0)
        {
            if(arr[1000000 - i])
                cout<<i<<"\n";
        }          
        else
        {
            if(arr[i])
                cout<<i<<"\n";
        }
            
    }
        
    
}