본문 바로가기

백준

[백준] 10989번 - 카운팅 정렬

#include <vector>
#include <algorithm>
#include <iostream>

using namespace std;

int main() {
	int count,a;
	cin >> count;
	int arr[10001] = { 0 };
	
	for (int i = 1; i < count + 1; i++) {		
		cin >> a;
		arr[a]++;
	}		

	for (int i = 1; i < 10001;i++) {
		if (arr[i] != 0) {
			for (int j = 0; j < arr[i]; j++) {
				cout << i << "\n";
			}
		}
	}	
	return 0;
}

카운팅정렬

입력하는 수의 범위가 작을 경우 범위 만큼의 배열을 만들어서 입력한 수의 index를 1 증가시킨다.

이후 루프를 돌면서 arr[i]가 0이 아닌  것들만 찾아서 arr[i]이 증가한만큼 인덱스를 출력한다.