정렬 알고리즘

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

 

2750번: 수 정렬하기

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

www.acmicpc.net

 

정렬 알고리즘 섹션에서 비교적 쉬운 문제이지만 조금 색다르게 풀어보기 위해 배열을 이용하였다.

 

어떻게 보면 저번에 학습한 배열파트를 잊지못해 적용해보고자 풀이해봤다.

 

#include <iostream>

using namespace std;

int main(){

    int N = 1;
    int n = 0;
    int a[2000] = {}; //0이상 1000이하의 정수를 담을 배열
    int b[2000] = {}; //-1000이상 0미만의 정수를 담을 배열

    cin>>N; //받을 숫자의 개수

	//사용자로부터 받은 숫자가 a배열의 범주인지 b배열의 범주인지 판단
    for(int i = 0;i < N;i++){
        cin>> n;
        if (n > 0){
            a[n]++;
        }
        if(n < 0){
            b[-n]++;
        }
        if(n == 0){
            a[n]++;
        }
    }
	
    //a, b에 카운트된 배열을 음수부터 차례대로 출력한다. 
    for (int k = 1000;k > 0;k--){

        if (b[k] > 0){
            cout<<-k<<endl;
        }
    }

    for(int j = 0;j < 1001;j++){
        if (a[j] > 0){
            cout<<j<<endl;
        }
    }


    return 0;
}

 

'코딩 > 백준 알고리즘' 카테고리의 다른 글

백준 1629번 : 곱셈  (0) 2024.05.14
백준 2805번 : 나무 자르기  (0) 2024.05.12
백준 2798번 : 블랙잭  (0) 2022.02.15
백준 5622번 : 다이얼  (0) 2022.02.15
백준 11720번 : 숫자의 합  (0) 2022.02.15