누구나 스트링으로 변환해서 사전형 정렬하는 것까지 쉽게 생각해낼 것 같다. 관건은 두번째 테스트 케이스를 어떻게 처리할지..⭐️
제한 사항을 참고해보면 numbers의 원소는 0 이상 1000 이하이므로
최대값을 고려해 3을 곱한다
그러면 [999, 555, 343434, 303030, 333]이 된다.
(비교를 용이하게 하기 위해 최소한의 자리수를 맞춰주는 개념이라고 보면 되겠다)
이런 기준으로 정렬하면 [999, 555, 343434, 333, 303030]이 되므로 [9, 5, 34, 3, 30]라는 결과를 도출할 수 있다!
천재다.. 다들 어떻게 이런 걸 생각해냈지.. 처음에 이걸 생각 못하고 어어어엄청 헤맸다🥲
여기서 또 놓치면 안될 테스트케이스가 존재한다. 바로 모든 원소가 0일 때!
예를 들어 [0, 0, 0, 0]이 주어지면 0000이 반환되선 안되고 0이 반환되어야 한다.
(아래 최종 코드에 이어서 설명하겠다)
def solution(numbers):
strNums = list(map(str, numbers)) #1
sortedStr = sorted(strNums, key=lambda x : x*3, reverse = True) #2
answer = str(int(''.join(sortedStr))) #3
return answer