
아래 프로그래머스 로고를 클릭하면 해당 문제로 이동합니다 😀
뭐야 ? 순열 쓰면 되잖아 ? 해서 itertools.permutations를 이용하면 예시코드는 당연히 되지만 아무래도 .. 모든 조합을 다 계산하기때문에 시간 복잡도적으로 너무 나쁘다. 제출시에도 막힌다 ...
입력받은 숫자 리스트를 sorted를 이용해서 정렬을 하면 되는데, 두번째 입출력 예시인 [3, 30, 34, 5, 9] ➡️ "9534330"를 보자.
정렬은 [9, 5, 34, 3, 30]으로 되어야하는데 그냥 sort를 쓰면 [9, 5, 34, 30, 3]으로 정렬된다.
앞자리가 3인 3, 30, 34와 같이 앞의 숫자만을 보고 정렬 기준을 정할 수 없기 때문에 다음과 같은 방법을 사용한다.
sorted(num, key = lambda x:x*3, reverse=True)추가로, 입력값이 [0, 0, 0, 0] 같이 0만 나오면 join을 거치고 나서 값이 0000이 나온다. 이 경우를 탈출하기 위해 str(int(answer))을 이용하면 된다.
def solution(numbers):
answer = ''
num = list(map(str, numbers))
# s = sorted(num, reverse=True)
s = sorted(num,key=lambda x: x*3,reverse=True)
answer += ''.join(s)
return str(int(answer))
print(solution([6, 10, 2]))
print(solution([3, 30, 34, 5, 9]))

허걱 파이썬으로 코테 준비하시는군요!
저는 JS로하지만 담에 기회되면 같이 해요!ㅎㅎ🤭