끄적끄적 코딩
article thumbnail
728x90

정렬문제입니다.

N의 개수가 천만개가 되기 때문에 전부 배열에 넣는것은 어렵습니다.
하지만 입력받는 자연수는 10000보다 작거나 같은 자연수이므로,
10000크기 짜리 배열을 만들어서 입력받은 수의 위치에 +1씩 더해줘서
x의 숫자가 몇번있다는 것을 알 수 있게합니다.

그리고 for문을 돌면서 배열에 값이 들어와 있다면 그 숫자를
배열에 들어와 있는 숫자만큼 출력해주었습니다.


#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;

int main(int argc, char *argv[])
{
	int n;
	int num;
	int arr[10010];

	cin >> n;

	memset(arr, 0, sizeof(arr));

	for (int i = 0; i < n; ++i) {
		scanf("%d", &num);
		++arr[num];
	}

	for (int i = 0; i <= 10000; ++i) {
		for (int j = 0; j < arr[i]; ++j) {
			printf("%d\n", i);
		}
	}

	return 0;
}

검색 태그