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

728x90
반응형

https://www.acmicpc.net/problem/1427

 

1427번: 소트인사이드

첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

문제

배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자.

입력

첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.

출력

첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다.

코드

기본 라이브러리 정렬 코드

array = list(map(int, input()))
array.sort(reverse=True)

for i in array:
    print(i, end="")

퀵 정렬 코드

array = list(map(str, input()))

def quick_sort(array, start, end):
    if start >= end:
        return

    pivot = start
    left = start + 1
    right = end

    while left <= right:
        while left <= end and array[left] >= array[pivot]:
            left += 1
        while right > start and array[right] <= array[pivot]:
            right -= 1
        if left > right:
            array[pivot], array[right] = array[right], array[pivot]
        else:
            array[left], array[right] = array[right], array[left]
    quick_sort(array, start, right-1)
    quick_sort(array, right+1, end)

quick_sort(array, 0, len(array)-1)
for i in array:
    print(i, end="")

계수 정렬 코드

array = list(map(int, input()))
count = [0]*(max(array)+1)
dp = []
for i in array:
    count[i] += 1

for i in range(len(count)-1, -1, -1):
    for j in range(count[i]):
        dp.append(i)

for i in dp:
    print(i, end="")
728x90
반응형