본문 바로가기
STUDY 기록/코테기록

[프로그래머스] 정수 내림차순으로 배치하기

by TREEKIM 2022. 6. 19.

문제 설명

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

제한 조건
  • n은 1이상 8000000000 이하인 자연수입니다.
입출력 예nreturn
118372 873211

내가 푼 풀이

def solution(n):
    answer = reversed(sorted(str(n)))
    answer = int("".join(i for i in answer))
    return answer

 

다른 사람의 풀이

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

병합정렬을 직접 코드로 작성하셨네요. 대단하십니다!

def solution(n):
    answer = ''
    lst = []

    while n > 0:
        r = n % 10
        n = n // 10
        lst.append(r)

    lst.sort()
    lst.reverse()

    for j in range(0, len(lst)):
        answer += str(lst[j])

    return int(answer)
def solution(n):
    num=list(str(n))
    num.sort(reverse=True)
    answer=" "
    for k in num:
        answer+=str(k)
    return int(answer)

배운 점

"".join(리스트) 혹은 "".join(i for i in 리스트) 같은 방법으로 리스트를 문자열로 다시 병합 가능함

댓글