[프로그래머스/파이썬] 정렬 가장 큰 수

bye9·2021년 1월 23일
0

알고리즘(코테)

목록 보기
17/130

https://programmers.co.kr/learn/courses/30/lessons/42746


알고리즘 분류

  • 정렬

문제풀이

처음에 모든 경우의 수때문에 순열을 생각했었다.(permutations함수)
쓸 때부터 시간 초과될 것 같아서 꺼림칙했는데 역시나 테스트케이스만 통과하고 모조리 시간 초과가 떴다..ㅎ

정렬에서 key값을 기준으로 내림차순시키는데 정렬시키는 기준은 각 원소에 *3을 한 값이다. (이런생각어떻게하지...)

이는 각 원소 '6', '10', '2'가 '666', '101010', '222'를 기준으로 정렬하는 것인데 문자열 정렬은 첫 번째 인덱스부터 차례대로 ascii코드에 따라 정렬을 하게 된다. 이렇게 안하고 그냥 바로 정렬을 하면 두 번째 예시의 경우, 303보다는 330이 크므로 3,30순으로 정렬이 되어야 하는데 3다음에 비교할 값이 없어서 30,3으로 정렬이 되버린다.

마지막 str(int())한 이유는 '000'의 경우 '0'으로 출력하기 위해서이다.

소스코드

def solution(numbers):
    lst=list(map(str, numbers))
    lst.sort(key=lambda x:x*3, reverse=True)

    return str(int(''.join(lst)))

0개의 댓글