[Python] 정수 내림차순으로 배치하기

쥬쥬스·2023년 8월 24일
0
post-thumbnail

문제

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

제한 조건

  • n은 1이상 8000000000 이하인 자연수입니다.

입출력 예

nreturn
118372873211

Solution

def solution(n):
    a = list(str(n))

    for i in range(0,len(a)):
        for j in range(i+1,len(a)):
            if a[i] <= a[j]:
                a[i],a[j] = a[j],a[i]

    answer = int(''.join(a))
    return answer
  1. 각각의 숫자를 문자열로 바꿔준다
  2. 그 값들을 list로 넣어준다
  3. 리스트에 하나씩 접근하는데, 처음엔 전체로 두번째에는 그 다음 원소부터 접근한다.
    큰 수부터 넣어주고 싶으므로, i와 j를 비교해서 i가 j보다 작은경우 두개를 바꿔준다 (선택 정렬)
  4. 리스트의 원소들을 공백없이 join 시켜주고, int로 변환시킨다

점수를 많이 안주는 것으로 봐선 속도측면에서 좋지 않은 것 같기두..?

Other Solution

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

리스트를 sort해서 가져오는 방법도 있었다. 나는 중간과정을 너무 어렵게 생각한듯😓

profile
느려도... 꾸준히.....🐌

0개의 댓글