소트인사이드
https://www.acmicpc.net/problem/1427
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
2 초 | 128 MB | 68887 | 44299 | 37018 | 64.656% |
문제
배열을 정렬하는 것은 쉽다. 수가 주어지면,
그 수의 각 자리수를 내림차순으로 정렬해보자.
입력
첫째 줄에 정렬하려고 하는 수 N이 주어진다.
N은 1,000,000,000보다 작거나 같은 자연수이다.
출력
첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다.
예제 입력 1
2143
예제 출력 1
4321
예제 입력 2
999998999
예제 출력 2
999999998
예제 입력 3
61423
예제 출력 3
64321
예제 입력 4
500613009
예제 출력 4
965310000
출처
알고리즘 분류
입력을 문자열로 받고 해당 문자열의 인덱스 0번부터 마지막까지 순회하면서
해당 숫자의 배열의 값을 1 추가해준다. ex) arr[1]++;
위의 작업을 마친 이후에 arr[9] -> arr[0] 까지 순회하면서 출력해준다.
통과된 코드
#include <iostream> using namespace std; string str; int arr[10]; int main() { cin >> str; for (int i = 0; i < str.length(); i++) arr[str[i] - '0']++; for (int i = 9; i >= 0; i--) { for (int j = 0; j < arr[i]; j++) cout << i; } return 0; }