https://programmers.co.kr/learn/courses/30/lessons/42746
위 문제를 lambda 식으로 풀다가 이 상황에선 이렇게 정렬 저 상황에선 저렇게 정렬하고 싶었다.
이러한 함수를 찾다 cmp_to_key() 함수를 찾게 되어 정리해본다.
[공식문서]
https://docs.python.org/ko/3/howto/sorting.html?highlight=sorting#key-functions
functool.cmp_to_key(func)는 sorted와 같은 정렬 함수의 key 매개변수에 함수를 전달할 때 사용한다.
즉, 직접 정렬하는 함수를 만들어 그것을 key에 적용시키는 방식이다.
이 함수는 return 값에 따라 정렬하게 된다.
- return -1(음수) : 첫 번째가 두 번째보다 작을 때
- return 0 : 첫 번째와 두 번째가 같을 때
- return 1(양수) : 첫 번째가 두 번째보다 클 때
이 함수를 위 프로그래머스 문제에 적용해 보도록 하겠습니다.
import functools
def comparator(a,b):
t1 = a+b
t2 = b+a
return (int(t1) > int(t2)) - (int(t1) < int(t2)) # t1이 크다면 1 // t2가 크다면 -1 // 같으면 0
def solution(numbers):
n = [str(x) for x in numbers]
n = sorted(n, key=functools.cmp_to_key(comparator), reverse=True)
answer = str(int(''.join(n)))
return answer
'Python > 모듈 & 패키지 & 라이브러리' 카테고리의 다른 글
[Python] set 집합 (0) | 2022.10.18 |
---|---|
[Python] collections.Counter (0) | 2022.08.02 |
[Python] re (정규 표현식) (0) | 2022.05.14 |
[Python] itertools & 활용 (0) | 2022.05.12 |
[Python] Image Labeling Tool(labelimg) 설치 및 사용 방법 (0) | 2021.11.22 |