[프로그래머스][LV.1] 정수 내림차순으로 배치하기 | python3

2025. 1. 16. 14:01프로그래머스/LV.1

 

문제 링크: 정수 내림차순으로 배치하기

 

문제 설명

문제 설명

함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.

제한사항
- n은 1이상 8000000000 이하인 자연수입니다.

 


문제 풀이

정수 n을 문자열로 변환해서 변수에 저장한다. 문자열로 정렬한다. sorted 함수는 리스트로 반환하기 때문에 .join으로 문자열로 만들어준다. 

 

내코드

def solution(n):
    answer = ''
    for s in str(n):
        answer+=s
    answer=int(''.join(sorted(answer,reverse=True)))
    return answer

 

 


더보기

다른사람풀이

def solution(n):
    ls = list(str(n))
    ls.sort(reverse = True)
    return int("".join(ls))

list(str(n)) 을 하면 바로 리스트로 변환된다니...

 

def merge(left, right):
    result = []
    while len(left) > 0 or len(right) > 0:
        if len(left) > 0 and len(right) > 0:
            if left[0] >= right[0]:
                result.append(left[0])
                left = left[1:]
            else:
                result.append(right[0])
                right = right[1:]
        elif len(left) > 0:
            result.append(left[0])
            left = left[1:]
        elif len(right) > 0:
            result.append(right[0])
            right = right[1:]
    return result

def mergeSort(arr):
    if len(arr) <= 1:
        return arr

    mid = len(arr) // 2
    left = arr[:mid]
    right = arr[mid:]

    left = mergeSort(left)
    right = mergeSort(right)

    return merge(left, right)

def solution(n):
    arr = list(str(n))
    n = int(''.join(mergeSort(arr)))
    return n

 

병합 정렬을 직접 코드로 구현한 거라고 한다. 공부 필요

이 부분은 나중에 추가로 정리해서 올려야 할 것 같다