[개발]자국/[백준]

[백준] 1427 번 : 소트인사이드 / C++

DevCat_ 2023. 7. 28. 17:44

[문제]

백준 문제 : https://www.acmicpc.net/problem/1427

 

1427번: 소트인사이드

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

www.acmicpc.net

문제 :

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

 

입력 : 

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

 

출력 :

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

 

[코드 풀이]

[실패한 코딩]

 

[성공한 코딩]

더보기

문자열로 입력받고, 문자 배열로 바꾸고, 어차피 정수, char니까 정렬하는데 sort 써버리자.

#include <bits/stdc++.h>
using namespace std;

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

    string str;
    int num;

    cin >> str;
    num = str.length();
    char* chars = new char[num];
    str.copy(chars, str.length() + 1);

    sort(chars, chars + num);
    for (int i = num-1; i >= 0; i--) {
        printf("%c", chars[i]);
    }

    //cout << chars;

    return 0;
}

 

[후기 및 배운 점]

근데 sort를 쓰면 안 됐나?? 좀 쉬운 문제라 직접 구현했어야 했나??

 

 

#sort를 아예 내림차순으로 바꾸려고 했으나, 실패했다. greater<char>, less<char>가 안 되던 이유가 뭘까

 

#또한 for문으로 하나 씩 출력할 때 쓰레기값이 있는 원소가 있었다. 그래서 바로 문자열로 출력할 수 없었다.