문제 설명
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰 것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를 들어 n이 118372면 873211을 리턴하면 됩니다.
제한 조건
- n은 1이상 8000000000 이하인 자연수입니다.
입출력 예
n | return |
118372 | 873211 |
✅SOL_1
1
2
3
4
|
def solution(n):
n = str(n)
n_sort = sorted(n, reverse=True)
return int("".join(n_sort))
|
cs |
정수형으로 입력된 수를 하나하나씩 뜯어서 내림차순으로 배치하여 다시 정수형으로 반환하여야 한다. 내림차순으로 정렬할 때 sorted정렬 함수를 사용하기 위해 정수형 n을 문자열로 형변환하여 저장한다.
파이썬에 내장되어 있는 정렬함수는 sort와 sorted함수가 있는데, sort함수는 정렬하고자 하는 객체를 정렬하여 저장한다. 즉 정렬된 리스트를 따로 뽑아내는 것이 아니라 객체 자체를 변경한다. 또한 sort함수는 리스트만을 위한 함수로서 입력된 리스트를 정렬된 리스트로 변경하여 저장하고, 기본값으로 알파벳 순, 가나다순, 오름차순으로 정렬한다.
이에 반해 sorted는 어떠한 iterable한 객체도 정렬이 가능하다. 즉 문자열, 리스트, 세트, 튜플, 사전형 모두 정렬 가능하다. 또한 sort함수와 달리 객체 자체를 변경하지 않고 정렬된 새로운 객체를 반환한다. 그리고 sort와 마찬가지로 기본값으로 알파벳순, 가나다순, 오름차순으로 정렬한다.
sort와 sorted함수는 reverse매개변수를 통해 오름차순, 내림차순으로 정렬을 제어할 수 있다. reverse는 bool값으로 입력한다.
sort(n, reverse=True)
sorted(n, reverse=True)
와 같이 작성하면 기본값이던 오름차순(reverse=False) 정렬을 내림차순 정렬으로 변경한다.
또한 sort와 sorted함수는 key매개변수를 통해 기준값이 있는 정렬을 할 수 있다. 정렬을 목적으로 하는 함수(예를 들어 len, str.lower, ...) 를 입력하거나 lambda를 사용해 값을 기준값과 비교하며 정렬한다.
그렇게 sorted와 reverse매개변수를 통해 내림차순으로 정렬된 문자열을 n_sort에 저장한다. 이때 sorted는 리스트형으로 반환하기 때문에 n_sort는 리스트형이다. 따라서 하나하나 떨어져 있는 값들을 합쳐 다시 정수형으로 반환해주어야 한다. 이때 join함수를 사용한다
join함수는 리스트의 값을 합치는 함수이다.
"구분자".join(list)
위와 같이 사용할 수 있다. 이때 ""사이의 구분자는 데이터들을 합칠 때 각 값 사이에 들어갈 특정 문자를 작성하여 합쳐줄 수 있다. 예를 들어 구분자가 < " " > 처럼 1칸의 공백이라면 값을 합칠 때 1칸의 공백을 두고 합쳐져서 반환된다.
문제에서는 < "" > 와 같이 따옴표 사이에 아무 값도 쓰지 않아 각 값이 아무것도 사이에 두지 않고 합쳐지도록 한다. 그리고 이것을 int로 감싸 정수형으로 반환하여 return 한다.
'Python 공부기록' 카테고리의 다른 글
Python _ 문자열 내 p와 y의 개수 (1) | 2021.03.16 |
---|---|
Python _ 문자열 다루기 기본 (0) | 2021.03.15 |
Python _ 최대공약수와 최소공배수 (1) | 2021.03.10 |
Python _ 수박수박수박수박수? (0) | 2021.03.09 |
Python _ 정수 제곱근 판별 (0) | 2021.03.08 |