티스토리 뷰

파이썬에서 sort 를 수행할 때 그에 대한 key를 지정해줄 수 있다.

 

from functools import cmp_to_key

def compare(a,b):
    if a+b > b+a:
        return -1
    elif a+b < b+a:
        return 1
    else:
        return 0

def solution(numbers):
    answer = ''
    numbers = list(map(str, numbers))
    numbers.sort(key=cmp_to_key(compare))
    answer = ''.join(numbers)
    
    return str(int(answer))

 

이는 프로그래머스 "가장 큰 수" 문제에 대한 코드인데, 문자열을 커스텀한 key 로 정렬하는 것이 필요하다

위의 compare 함수를 보면 string a, b에 대해, 다음과 같은 로직으로 정렬을 처리한다

 

1. (a+b) > (b+a): return -1

 -> e.g) a="2", b="10" (a+b) ="210" ,(b+a) = "102", (a+b) > (b+a) .. return -1

 -> a가 b보다 앞에 있어야 한다는 뜻!

 

2. (a+b) < (b+a): return 1

 -> e.g) a="10", b="6" -> (a+b)="106", (b+a)="610". (a+b)<(b+a) .. return 1

 -> a 가 b보다 뒤에 있어야 한다는 뜻

 

이렇게 작성한 compare 함수를 소팅할 때 cmp_to_key(compare) 로 전달해주면 된다

 

'연습' 카테고리의 다른 글

프로그래머스 파일명 정렬  (0) 2024.06.17
프로그래머스 h-index  (0) 2024.06.17
EC2 Domain SSL  (0) 2024.05.27
SSL 복습 및 RSA 알고리즘 사용 이유  (1) 2024.05.14
SSL Handshake, Cipher Suite  (0) 2024.05.14
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함