함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
n은 1이상 8000000000 이하인 자연수입니다.
나의 풀이
def solution(n):
answer = ''
string = str(n) # 자연수 문자열로 변환
list = []
for i in range(len(str(n))):
list.append(string[i]) # 문자열의 문자 하나하나를 리스트에 append
list.sort() # 뻘짓이다. 안해도 된다.
list.sort(reverse=True) # 리스트 내림차순 정렬. 문자열이라 하더라도 정렬이 된다.
for i in range(len(list)):
answer += list[i] #문자를 내림차순 순서로 합치기
return int(answer) #내림차순 순서로 합쳐진 문자를 정수화
다른 사람의 풀이
def solution(n):
ls = list(str(n)) # 자연수 문자열로 변환 후, 리스트화.
ls.sort(reverse = True) # 리스트를 내림차순 정렬. 문자열이라 하더라도 정렬이 된다.
return int("".join(ls)) # 공백 없이 리스트를 하나의 문자열로 합친 후, 정수화.
list(문자열) -> 문자열을 하나하나 뜯어서 리스트의 각각의 요소로 집어넣어 준다. 즉, 요소의 개수가 문자열의 길이만큼이 되는 리스트를 얻는다.
join() 함수를 기억하고는 있었는데, 쓰는 방법을 까먹었었다.
"".join(ls) -> .join 앞에 오는게 합칠 때의 기준이다. 여기서는 공백없이 합치라는 뜻이다. 만약 " "이 온다면, 한 칸씩 띄어져서 합쳐진다. (1 1 5 8 9 이런식으로). 또한, join괄호 안에 합칠 리스트명을 넣어준다.
ls.sort(reverse = True) : 단순히 거꾸로 정렬시키는 걸로 알고 있었는데, 알고보니 이거 자체가 내림차순 정렬이었다. 주의하자!