1427번 소트인사이드
풀이 방법
- 주어지는 수가 최대 1,000,000,000이므로 그냥 sort하기는 힘들다
- 첫번째 방법
- [0.0,0,0,0,0,0,0,0,0]를 만들고
- 주어진 숫자를 한자리씩 돌면서
- 배열의 각 자리에 +1을 한다(숫자가 나온 횟수를 기록한다)
ex) | 2143251 | - |
---|
1 | 2143251 | [0,0,1,0,0,0,0,0,0,0] |
2 | 2143251 | [0,1,1,0,0,0,0,0,0,0] |
3 | 2143251 | [0,1,1,0,1,0,0,0,0,0] |
4 | 2143251 | [0,1,1,1,1,0,0,0,0,0] |
5 | 2143251 | [0,1,2,1,1,0,0,0,0,0] |
6 | 2143251 | [0,1,2,1,1,1,0,0,0,0] |
7 | 2143251 | [0,2,2,1,1,1,0,0,0,0] |
- 출력할 때 9부터 0까지 각 숫자를 나온 수만큼 출력한다
- 두번째 방법
- 9부터 0까지 돌면서
- 주어진 숫자의 한자리씩 비교하면서 동일한 숫자를 출력한다
- 9출력->8출력->7출력->...->2출력->1출력->0출력
풀이
Python
nums = input()
num_count = [0] * 10
for num in nums:
num_count[int(num)] += 1
for i in range(9, -1, -1):
if num_count[i] != 0:
for _ in range(num_count[i]):
print(i, end="")
nums = input()
for i in range(9, -1, -1):
for num in nums:
if int(num) == i:
print(i, end="")
Swift
let nums = readLine()!
var num_count = Array(repeating: 0, count: 10)
for num in nums {
num_count[Int(String(num))!] += 1
}
for i in (0...9).reversed() {
if num_count[i] != 0 {
for _ in 1...num_count[i] {
print(i, terminator: "")
}
}
}
let nums = readLine()!
for i in (0...9).reversed() {
for num in nums {
if Int(String(num))! == i {
print(i, terminator: "")
}
}
}