알고리즘/BOJ

백준 10989번 수 정렬하기 3

꾸준함. 2018. 5. 7. 17:10

문제 링크입니다: https://www.acmicpc.net/problem/10989


페이스북 생활코딩 그룹에서 질문이 올라왔길래 한번 풀어봤습니다.

알고리즘은 완벽했지만 cin과 cout이 무거워서 시간초과가 발생했었습니다.

따라서 printf과 scanf를 사용했더니 AC가 나왔습니다...


#include <iostream>

using namespace std;

 

const int MAX = 10000 + 1;

 

int N;

int arr[MAX];

 

void ascendingOrder(void)

{

        //누적 합

        for (int i = 1; i < MAX; i++)

                 arr[i] += arr[i - 1];

 

        for (int i = 1; i < MAX; i++)

        {

                 //arr[i]-arr[i-1] i가 입력된 횟수

                 int idx = arr[i] - arr[i - 1];

                 while (idx--)

                         //cout << i << endl;

                         printf("%d\n", i);

        }

}

 

int main(void)

{

        cin >> N;

 

        for (int i = 0; i < N; i++)

        {

                 int num;

                 //cin >> num;

                 scanf("%d", &num);

                 arr[num]++;

        }

 

        ascendingOrder();

        return 0;

}


개발환경:Visual Studio 2017


지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형