본문 바로가기
백준 코딩테스트/실버

10989) 수 정렬하기 3 (C++)

by xortl98 2022. 5. 7.
728x90

 출처 

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

 

10989번: 수 정렬하기 3

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

www.acmicpc.net

 내 풀이 

#include<iostream>

using namespace std;

int N = 0;
int input_number = 0;
int number[10001] = { 0, };

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

	cin >> N;

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

	for (int i = 1; i <= 10000; i++)
	{
		for (int j = 0; j < number[i]; j++)
		{
			cout << i << "\n";
		}
	}
}

 해설

첫째 줄에 개수가 천만개까지 입력될 수 있기 때문에 정렬을 하면 시간 초과가 나온다.

따라서 입력될 수 있는 수 10000까지의 수의 정보를 저장할 number 배열 선언하고 N만큼 값을 입력 받고 

수가 입력되면 ++ 형식으로 수가 몇번이나 입력받았는지 저장하고 출력해주었다. 

 느낀점 

기초를 튼튼히 쌓아야 나중에 어려운 문제도 쉽게 응용하여 풀 수 있을거 같다.

'백준 코딩테스트 > 실버' 카테고리의 다른 글

9012) 괄호 (C++)  (0) 2022.05.08
2108) 통계학 (C++)  (0) 2022.05.08
2751) 수 정렬하기 2 (C++)  (0) 2022.05.07
10866) 덱 (C++)  (0) 2022.05.07
2164) 카드2 (C++)  (0) 2022.05.05