알고리즘
프로그래머스(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만으로 구성된 경우가 있을 수 있기 때문이다.
반응형