[test] 정수 내림차순으로 배치하기 - python

joygoround·2020년 5월 2일
0

Coding Test

목록 보기
32/42

Q.

[문제 설명]
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
[제한 조건]
n은 1이상 8000000000 이하인 자연수입니다.

입출력 예
n	return
118372	873211

my sol.

def solution(n):
	nList = list(map(int, str(n)))
    newL = sorted(nList, reverse = True)
    strings = [str(i) for i in newL]
    a_string = "".join(strings)

    return int(a_string)
  1. 정수 n의 각각 자리수를 리스트로 바꾸기
    -> 문자열로 바꾼 후 정수로 바꾸고 리스트에 묶어주기

  2. 생성된 각 자리수가 있는 리스트를 내림차순으로 정렬하기
    -> sorted 사용 : 새로운 정렬된 리스트를 반환하기 때문. list.sort() 메서드를 사용하면 리스트를 제자리에서 수정. None을 반환(원래 목록이 필요한 경우 이러면 사용할 수 없음.)
    -> list.sort()와 sorted()는 모두 불리언 값을 갖는 reverse 매개 변수를 받아들임.

  3. 정렬된 리스트를 합쳐서 다시 정수로 만들어 리턴.
    -> newL 리스트에 있는 값들을 str()해서 strings 리스트에 저장.
    -> join()으로 strings 리스트에 있는 값들을 붙여서 문자열 만들고 a_string에 할당.
    -> 문자열을 정수로 변환한 값을 리턴

other sol.

def solution(n):
    ls = list(str(n))
    ls.sort(reverse = True)
    return int("".join(ls))
  • 문자열 그대로 리스트로 묶어줄 수 있음
  • sort()를 사용하면 원래 리스트가 수정됨.
  • str으로 굳이 바꾸지 않고 바로 join으로 묶어도 됨.
profile
roundy

0개의 댓글