코딩테스트 연습
[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)))