코딩테스트 연습

[programmers] 가장 큰 수 / 조건정렬

콩콩(๓° ˘ °๓)♡ 2023. 4. 29. 15:27
 

프로그래머스

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

programmers.co.kr

from functools import cmp_to_key

def solution(numbers):
    numbers.sort(key=cmp_to_key(lambda x, y: int(str(y) + str(x)) - int(str(x) + str(y))))
    numbers = list(map(str, numbers))
    return str(int(''.join(numbers)))

cmp_to_key라는 조건정렬 기능을 사용하면 쉽게 해결할 수 있다.

마지막 답을 return할 때, int로 한번 전환해주지 않으면 테스트 케이스 11번의 [0, 0, 0, 0] => '0000'을 통과할 수 없다.

 

아래는 cmp_to_key를 모를 때 쓸 수 있는 방법이다. 

문자열끼리 비교를 실시할 경우 같은 자리까지만 비교하여 대소를 결정하기 때문에 사용할 수 있는 방법이다.

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