프로그래머스 / 가장 큰수

맹민재·2023년 4월 11일
0

알고리즘

목록 보기
58/134

from itertools import permutations

def solution(numbers):
    answer = ''
    numbers = list(map(str, numbers))
    numbers = sorted(numbers, key=lambda x: x*3, reverse = True)

    return str(int("".join(numbers)))

이 문제의 핵심은 3, 30, 34 이렇게 앞자리가 같은 숫자에 대해 어떻게 정렬하느냐이다.

주어지는 numbers의 원소가 1000 이하이므로 sorted(numbers, key=lambda x: x*3, reverse = True) 이렇게 문자를 3번 더한 것을 정렬해서 구할 수 있다.

3, 30, 34를 그냥 정렬하게 되면 34 30 3 이렇게 되는데 가장 큰 경우는 34 3 30 이렇게 되어야한다. 하지만 문자를 3번 더해주면 343434 333 303030 이 되므로 옳게 정렬된다.


알고 보면 정말 단순해보이지만 정렬 방법을 찾기 위해 다른 방법으로 많이 도전했었다... permutations을 사용해본다던지 등...

profile
ㄱH ㅂrㄹ ㅈr

0개의 댓글