[백준 Python Swift] 1427번 소트인사이드

Cobugi·2021년 9월 1일
0

백준

목록 보기
13/21
post-thumbnail

1427번 소트인사이드


풀이 방법

  • 주어지는 수가 최대 1,000,000,000이므로 그냥 sort하기는 힘들다
  • 첫번째 방법
    • [0.0,0,0,0,0,0,0,0,0]를 만들고
    • 주어진 숫자를 한자리씩 돌면서
    • 배열의 각 자리에 +1을 한다(숫자가 나온 횟수를 기록한다)
ex)2143251-
12143251[0,0,1,0,0,0,0,0,0,0]
22143251[0,1,1,0,0,0,0,0,0,0]
32143251[0,1,1,0,1,0,0,0,0,0]
42143251[0,1,1,1,1,0,0,0,0,0]
52143251[0,1,2,1,1,0,0,0,0,0]
62143251[0,1,2,1,1,1,0,0,0,0]
72143251[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: "")
        }
    }
}
profile
iOS Developer 🐢

0개의 댓글