정렬(Sort)

백준 1427번: 소트인사이트

cepiloth 2020. 11. 28. 18:19
반응형

 

www.acmicpc.net/problem/1427

 

1427번: 소트인사이드

첫째 줄에 정렬하고자하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

 

STL sort(n log n) 를 사용하지 않고 계수 정렬을 사용한 풀이 

#include <iostream>
#include <algorithm> // min
#include <functional>
#include <math.h>
#include <string>
#include <vector>
#include <map>
#include <sstream>

using namespace std;

int main()
{
	std::ios::sync_with_stdio(false);

	int n;  cin >> n;

	vector<int> arr(10);

	while (n != 0) {
		int cand = n % 10;
		arr.push_back(cand);
		n = n / 10;
        arr[cand]++;
	}

	for (int i = 9; i >=0 ; i--) {
        int cand = arr[i];
        for(int j=0; j<cand; j++) {
            cout << i;
        }
	}
	cout << "\n";
	return 0;
}

 

STL 정렬을 사용한 풀이

#include <iostream>
#include <algorithm> // min
#include <functional>
#include <math.h>
#include <string>
#include <vector>
#include <map>
#include <sstream>

using namespace std;

int main()
{
	std::ios::sync_with_stdio(false);

	int n;  cin >> n;

	vector<int> arr;

	while (n != 0) {
		int cand = n % 10;
		arr.push_back(cand);
		n = n / 10;
	}
	sort(arr.begin(), arr.end(), greater <int>());

	for (int i = 0; i < arr.size(); i++) {
		cout << arr[i];
	}
	cout << "\n";
	return 0;
}

 

반응형