티스토리 뷰

728x90

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

 

10989번: 수 정렬하기 3

첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.

www.acmicpc.net


  • 해설 : 

N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.

 

 

 


  • 풀이 :

sort를 사용하기 싫어서 조금 비효율적이지만 새로운 방법을 사용해보았다. 배열을 max range만큼 늘리고 N개의 수에 대해 flag로 표시해준다. (1로 표시해주었다.) 배열의 마지막 인덱스부터 거꾸로 탐색하며 1인 경우에 출력해주었다.

 

 


  • 소스코드 : 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
int main(void) {
    int n;
    cin >> n;
    int ary[10001= { 0, };
    for (int i = 1; i < n+1; i++){
        int temp;
        scanf("%d"&temp);
        ary[temp] += 1;
    }
    for (int i = 1; i < 10001;i++) {
        while (ary[i]>0) {
            printf("%d \n", i);
            ary[i] -= 1;
        }
    }
}
cs
320x100
댓글
© 2022 WonSeok, All rights reserved