728x90
728x90

문제

배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자.

 

입력

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

 

출력

첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다.

 

예제 입력 1

2143

 

예제 출력 1 

4321

 

예제 입력 2 

999998999

 

예제 출력 2 

999999998

 

예제 입력 3 

61423

 

예제 출력 3 

64321

 

예제 입력 4 

500613009

 

예제 출력 4 

965310000

 

알고리즘 분류

  • 문자열
  • 정렬

 

문제 출처

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

 

1427번: 소트인사이드

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

www.acmicpc.net

 

문제 해결 방법

  • 문자열로 숫자를 입력 받은 후, 문자를 하나씩 분리하여 벡터에 넣은 후, sort() 함수를 이용하여 내림차순 정렬 후 출력하도록 하여 문제를 해결하였다.
    • 문자를 하나씩 분리하여 벡터에 넣을 때 '0'을 빼준다.
  • sort() 함수를 사용할 때, 세 번째 인자에 greater<>() 임시 객체를 넣어주면 내림차순으로 정렬시킬 수 있다.
sort(v.begin(), v.end(), greater<>());     // 내림차순 정렬

 

코드

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

string N;
vector<int> nums;

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

    cin >> N;

    for (int i = 0; i < N.size(); i++) {
        nums.push_back(N[i] - '0');
    }

    sort(nums.begin(), nums.end(), greater<>());    // 내림차순 정렬

    for (int i : nums) {
        cout << i;
    }

    return 0;
}

 

채점 결과 

 

참고

  • [단계별로 풀어보기] > [정렬]
  • 실버V
728x90
728x90

'Problem Solving > BOJ' 카테고리의 다른 글

[BOJ-10814][C++] 나이순 정렬  (0) 2022.11.01
[BOJ-1181] 단어 정렬  (0) 2022.11.01
[BOJ-11651][C++] 좌표 정렬하기 2  (0) 2022.10.30
[BOJ-11650][C++] 좌표 정렬하기  (0) 2022.10.29
[BOJ-2108][C++] 통계학  (0) 2022.10.27
[BOJ-10989][C++] 수 정렬하기 3  (0) 2022.10.27
[BOJ-2559][C++] 수열  (0) 2022.10.26
[BOJ-11659] 구간 합 구하기 4  (0) 2022.10.26