문제
접근
각 자리 숫자에 대해 해시 테이블을 만들어 개수를 카운팅하면 쉽게 해결 가능하다.
코드
- 파이썬 코드
1
2
3
4
5
6
7
8
9
10
11
def solution(n):
cnt = [0] * 10
answer = 0
while n>0:
cnt[n%10]+=1
n//=10
for i in range(9, -1, -1):
while cnt[i] > 0:
cnt[i] -= 1
answer = answer*10 + i
return answer
- C++ 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <vector>
using namespace std;
long long solution(long long n) {
int cnt[10] ={0};
long long answer = 0;
while(n>0){
cnt[n%10]++;
n/=10;
}
for(int i = 9; i>=0; i--){
while(cnt[i] > 0){
cnt[i]--;
answer = answer*10 + (i);
}
}
return answer;
}