😈 알고리즘/💻 백준

💻 10989번 문제 : 수 정렬하기 3

Buᐢ༝ᐢy 2022. 10. 31. 19:16
10989번: 수 정렬하기 3
https://www.acmicpc.net/problem/10989
#include <iostream>
using namespace std;

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);

	int N = 0;
	cin >> N;

	int arr[10001] = {};

	for (int i = 0; i < N; i++)
	{
		int tmp = 0;
		cin >> tmp;
		arr[tmp]++;
	}

	int arrNum = sizeof(arr) / sizeof(int);

	for (int i = 0; i < arrNum; i++)
	{
		for (int j = 0; j < arr[i]; j++)
		{
			cout << i << "\n";
		}
	}
}
메모리 (KB)시간 (ms)코드 길이 (B)
20201372381

🤔 다시 풀어보기

처음에는 아래와 같이 풀었는데 메모리 초과로 인해 틀렸다.

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

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);

	long long N = 0;
	long long numArr[10000001] = {};
	cin >> N;

	for (long long i = 0; i < N; i++)
	{
		cin >> numArr[i];
	}

	sort(numArr, numArr + N);

	for (long long i = 0; i < N; i++)
	{
		cout << numArr[i]<<"\n";
	}
}

다른 분들의 질문글을 읽어보면 Quick SortCounting Sort를 이용하라는 글이 심심찮게 보인다. 해당 내용 방법을 찾다가 쉽게 풀 수 있지 않을까 해서 위에 제출한 내용처럼 풀었고 맞았지만 찝찝했다. 정렬 문제인데 일차원 배열로 풀었기 때문이다. 다음에 제시한 방법을 더 공부해서 다시 풀어볼 예정이다.


Uploaded by N2T