1 minute read

❓문제

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

✏️입력

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

📜출력

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

💻코드

    /*
        [백준 1427] 소트인사이드
        22-08-27 / c++

        < 알고리즘 >

            숫자를 입력받고
            자리 수를 하나씩 배열에 저장한다
            배열 정렬해주고
            내림차순 정렬을 해준다


    */

    #include<iostream>
    #include<algorithm>

    using namespace std;

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

        int N;
        int iNum[10];
        int idx = 0;

        //배열 초기화
        memset(iNum, -1, 10 * 4);

        cin >> N;

        while (N != 0) {
            iNum[idx++] = N % 10;
            N /= 10;
        }

        sort(iNum, iNum + 10);

        for (int k = 9; k >= 0; k--) {
            if (iNum[k] == -1) {
                break;
            }
            cout << iNum[k];
        }

        return 0;
    }

  • void* memset(void* ptr, int value, size_t num);
    • void* ptr : 메모리의 시작 주소
      즉, 그 주소를 가리키고 있는 포인터가 위치하는 자리이다.

    • value : 메모리에 세팅하고자 하는 값
      int 타입으로 받지만 내부에서는 unsigned char로 변환되어서 저장된다.
      즉, ‘a’ 같은 문자형도 됨.

    • size_t num : 길이
      이 길이는 바이트 단위로써 메모리의 크기 한조각 단위의 길이를 말한다.
      보통 “길이 * sizeof(데이터타입)” 의 형태로 작성한다.
      반환값은 성공하면 첫번째 인자로 들어간 ptr을 반환하고, 실패한다면 NULL을 반환한다. 

    • 헤더파일은 memory.h 혹은 string.h 둘 중 하나를 사용한다.