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

문제 설명

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

 

제한 조건

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

 

입출력 예

n return
118372 873211

 

제가 작성한 코드는 아래와 같습니다.

solution.py

def solution(n):
    sorted_digits = sorted(str(n), reverse=True)
    sorted_n = int("".join(sorted_digits))
    return sorted_n

 

프로그래머스에서 좋아요를 가장 많이 받은 코드는 다음과 같습니다!

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

이 코드도 설명드리겠습니다! (아시는 분들은 넘어가시면 됩니다 ㅎㅎ)

 

위 solution 함수는 하나의 정수 n을 입력받아

그 숫자의 각 자릿수를 내림차순으로 정렬한 새로운 숫자를 반환합니다!

 

그리고 숫자를 문자열로 변환 후 리스트로 변환하는데,

ls = list(str(n)) : 입력받은 숫자 n을 먼저 문자열로 변환한 후, 이를 리스트로 만듭니다.

이렇게 하면 각 자릿수가 리스트의 원소가 됩니다.

 

ls.sort(reverse = True) : 리스트의 sort 메서드를 사용하여 원소들을 내림차순으로 정렬합니다. 

(reverse = True 옵션은 정렬 순서를 내림차순으로 설정합니다)

 

그리고 리스트를 문자열로 변환 후 정수로 변환하는데,

return int("".join(ls)) : 정렬된 리스트를 문자열로 변환한 후, 다시 정수형으로 변환하여 반환합니다. 

join 메서드는 리스트의 원소들을 하나의 문자열로 연결합니다.

 

 

예시를 통해 좀 더 쉽게 알아보겠습니다!

예를 들어, solution(3142)을 호출하면 어떻게 될까요?

  1.  3142는 문자열 '3142'로 변환되고, 이는 리스트 ['3', '1', '4', '2']로 변환됩니다.
  2.  리스트는 ['4', '3', '2', '1']로 내림차순 정렬됩니다.
  3. 위 리스트를 문자열 '4321'로 만들고, 이를 다시 정수 4321로 변환하여 반환합니다.

 

위 코드 구조 같은 경우 다른 문제 해결에도 많이 쓰이니까 숙지하시면 좋을 것 같습니다! ㅎㅎ

'코딩테스트 > 프로그래머스 문제' 카테고리의 다른 글

문자열을 정수로 바꾸기  (0) 2023.12.08
두 정수 사이의 합  (0) 2023.12.04
자릿수 더하기  (1) 2023.12.02
x만큼 간격이 있는 n개의 숫자  (0) 2023.12.01
자연수 뒤집어 배열로 만들기  (0) 2023.11.29