문제 링크입니다: 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
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 10835번 카드게임 (2) | 2018.05.07 |
---|---|
백준 2750번 수 정렬하기 + 백준 2751번 수 정렬하기 2 (0) | 2018.05.07 |
백준 1977본 완전제곱수 (0) | 2018.05.06 |
백준 2602번 돌다리 건너기 (0) | 2018.05.06 |
백준 1958번 LCS 3 (0) | 2018.05.06 |