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 |