본문 바로가기
Algorithm

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

by YGSEO 2021. 3. 11.
728x90

정렬

import functools

def comparator(a,b):
    t1 = a+b
    t2 = b+a
    return (int(t1) > int(t2)) - (int(t1) < int(t2)) #  t1이 크다면 1  // t2가 크다면 -1  //  같으면 0

def solution(numbers):
    n = [str(x) for x in numbers]
    n = sorted(n, key=functools.cmp_to_key(comparator),reverse=True)
    answer = str(int(''.join(n)))
    return answer

comparator 이건 JS에서도 비슷하게 했던걸로 기억 (sort에서 arrow function으로)

 

cmp_to_key는 처음보는 함수

python2 에서 사용되었다고 나옴 docs.python.org/ko/3/howto/sorting.html?highlight=sorting#key-functions

 

사용자의 함수를 key함수의 인자로 사용할때 사용됨

 


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

1000 이하이므로 3자리수로 맞춘 뒤, 비교

x*3으로 할 경우

['666', '101010', '222'] 로 변환되고

정렬하면

['666', '222', '101010']

이렇게 되는데 이건 기존 list를 변환하지 않는 것이기 때문에

 

최종 정렬후 결과는

['6','2,','10']

이렇게 된다.

 

숫자가 아닌 문자열을 숫자처럼 정렬 하는 것을 이용.


출처:

eda-ai-lab.tistory.com/467

728x90

댓글