알고리즘/문제 풀이

1427번: 소트인사이드

Themion 2021. 12. 8. 11:03

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

 

1427번: 소트인사이드

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

www.acmicpc.net

수 N을 수가 아닌, '0'~'9'로 이루어진 문자로 생각하면 쉽다. 각 문자가 나온 횟수를 센 뒤, 문자를 역순으로 나온 횟수만큼 출력하면 된다.

#include <cstdio>

// cnt[i]: 숫자 i가 나온 횟수
int cnt[10];

int main() {
    // 입력을 문자열로 생각하여 버퍼에 한 글자씩 입력받는다
    char buf;

    scanf("%c", &buf);
    // 문자열의 각 문자에 대해
    while (buf != '\n') {
        // 해당 문자열의 등장 횟수를 1 늘린다
        cnt[buf - '0']++;
        scanf("%c", &buf);
    }

    // 배열을 역순으로 출력
    for (int i = 9; i >= 0; i--) while (cnt[i]--) printf("%d", i);
    printf("\n");

    return 0;
}

'알고리즘 > 문제 풀이' 카테고리의 다른 글

1461번: 도서관  (0) 2021.12.08
1436번: 영화감독 숌  (0) 2021.12.08
1421번: 나무꾼 이다솜  (0) 2021.12.08
1406번: 에디터  (0) 2021.12.08
1389번: 케빈 베이컨의 6단계 법칙  (0) 2021.12.08