프로그래머스/Lv.2

[Python] 프로그래머스 가장 큰 수

MINU.SHINNNN 2024. 8. 13. 00:31

https://school.programmers.co.kr/learn/courses/30/lessons/42746?language=python3

 

프로그래머스

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

programmers.co.kr

풀이

주어진 numbers 에서 가장 큰 수를 만들 수 있도록 numbers를 정렬해야 합니다. 

 

s1, s2가 s1+s2 < s2 + s1이라면 순서를 바꿔야 합니다. 즉, 뒤에 있는 숫자를 앞으로 가져와야 합니다.

 

numbers를 string으로 바꾸고 cmp_to_key를 사용하면 쉽게 정렬을 처리할 수 있습니다.

 

from functools import cmp_to_key

def compare(s1, s2):
    if s1 + s2 < s2 + s1:
        return 1
    else:
        return -1
    
def solution(numbers):
    n = list(map(lambda x: str(x), numbers))
    nn = sorted(n, key = cmp_to_key(compare))
    
    return str(int(''.join(nn)))