알고리즘

프로그래머스(programmers) 가장 큰 수 python 정답 [정렬]

TheSapper 2023. 3. 16. 21:55
반응형

프로그래머스(programmers) 가장 큰 수 python 정답 [정렬]

문제 링크

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 정답

입출력 예

문제 이미지

numbers return
[6, 10, 2] "6210"
[3, 30, 34, 5, 9] "9534330"

정답 코드

import functools

def comparator(a,b):
    t1 = a+b
    t2 = b+a
    return (int(t1) < int(t2)) - (int(t1) > int(t2)) 

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

문제 해설

string 결합을 한 뒤, 순서를 바꿔 붙였을 때 큰 순서대로 정렬, 1이면 바꿔야 함으로 a가 뒤로 감

대부분의 언어가 comparator가 1을 리턴하면 바꾸고 그 외에는 안바꾼다.

또한 True, False는 각각 1과 0으로 캐스팅 되므로 - 하면 된다.

join 후 int 변환을 중간에 섞는 이유는 0만으로 구성된 경우가 있을 수 있기 때문이다.

 

 

반응형