본문 바로가기

코딩 테스트

백준 10989

계수 정렬을 사용하였는데도 메모리 부족이 나왔다.

 

입력 시 vector 의 사이즈를 다시 설정해주면서 count 배열로 만들고 그대로 출력 시켜서 메모리 부족을 해결했다.

배열 하나만 사용하였다.

 

 

#include <iostream>
#include <vector>


using namespace std;


int main(void)
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int num = 0;
	int max = 0;
	cin >> num;

	vector<int> nums;


	for (int i = 0; i < num; ++i)
	{
		int push = 0;
		cin >> push;
		if (push < nums.size())
		{
			nums[push-1]++;
		}
		else
		{
			nums.resize(push);
			nums[push-1]++;
		}
		
	}


	// i 인덱스 자체가 정렬 될 숫자이다.
	// countint[i] 의 값은 정렬 될 숫자가 중복된 수 이다.
	for (int i = 0; i < nums.size(); ++i)
	{
		if (nums[i] != 0)
		{
			// i 라는 값이 중복된 수 만큼 반복 출력된다.
			for (int j = 0; j < nums[i]; ++j)
			{
				cout << i + 1 << "\n";
			}
		}
	}



	return 0;
}

'코딩 테스트' 카테고리의 다른 글

백준 2751  (0) 2023.06.15
백준 1764  (0) 2023.06.14
백준 1874  (0) 2023.06.13
백준 11650  (0) 2023.06.12
백준 1120  (0) 2023.06.09