본문 바로가기

알고리즘

[백준 알고리즘 c++] 문제 57.수 정렬하기 3 10989

반응형

알고리즘

 

[문제]

 

문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.

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

출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.

 

[소스 코드]

#include <iostream>
using namespace std;

int setNum[10001] = { 0 };

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

	
	int N = 0;
	cin >> N;
	
	for (int i = 0; i < N; i++)
	{
		int num = 0;
		cin >> num;

		setNum[num] += 1;
	}

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

다른 풀이)

#include <iostream>

using namespace std;

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

   int T;
   cin >> T;

   int arr[10001] = {0};

   // 숫자 개수 카운트
   for(int i = 0 ; i < T; i++){
       int a;
       cin >> a;
       arr[a] += 1;
   }

   // 각 숫자를 개수만큼 출력해주기
   for(int i = 1 ; i <= 10000; i++)
       for (int j = 0; j < arr[i]; j++)
           cout << i << "\n";
}
 

 

[피드백]

반응형