Notice
Recent Posts
Recent Comments
«   2024/09   »
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
Tags
more
Archives
Today
Total
관리 메뉴

No Limitation

[정렬] 가장 큰 수 - 프로그래머스, 정렬 Customizing 본문

프로그래밍

[정렬] 가장 큰 수 - 프로그래머스, 정렬 Customizing

yesungcho 2022. 1. 29. 19:47

https://programmers.co.kr/learn/courses/30/lessons/42746?language=python3 

 

코딩테스트 연습 - 가장 큰 수

0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰

programmers.co.kr

 

이 문제는 '임의의 정렬 기준을 어떻게 적용할 수 있을까'를 고민해보는 것이 중요하다

 

그 부분은 바로 _functool cmp_to_key라는 녀석이 있다는 것이 핵심이다...!!

 

https://velog.io/@sparkbosing/python-%EB%82%B4-%EB%A7%88%EC%9D%8C%EB%8C%80%EB%A1%9C-%EC%A0%95%EB%A0%ACsort

 

python 내 마음대로 정렬(sort)!

아 파이썬도 자바처럼 정렬을 조작할 수는 없나..라는 생각은 가지고 있었지만정말 있는지는 몰랐다.당연히 있었겠지만 나는 이제야 알아버렸다.그 내용을 정리해보고자 한다!2차원 평면 위의

velog.io

https://gurumee92.tistory.com/161

 

프로그래머스 문제 풀이 가장 큰 수

이 문제는 이시윤 강사님의 프로그래머스 강좌 "파이썬을 무기로, 코딩테스트 광탈을 면하자!"를 보고 정리한 내용입니다. 문제 URL 가장 큰 수 Contents 문제 지문 파악하기 강사님의 알고리즘 풀

gurumee92.tistory.com

 

예를 들어

이런 함수를 정의하고

이런 리스트가 있을 때

앞 뒤 차이를 기준으로 정렬을 하고자 하면

이런식으로 정렬할 수 있다. 함수를 기준으로!!!

물론 lambda도 사용 가능하다..!

그렇게 해서 사전 정렬을 고려하지 않고 나만의 기준으로 정렬을 시도함!!

def compare(x,y) : 
	return int(x+y)-int(y+x)
    
def solution(numbers) : 
	answer = ''
    number_to_str = list(map(str,numbers))
    number_to_str = sorted(number_to_str,key=cmp_to_key(compare),reverse=True)
    print(number_to_str)
    answer = ''.join(number_to_str)
    if answer[0] == 0 : answer = '0'

print(solution(numbers))

복잡도는 sorted 되는 부분이 O(nlogn) 정도로 추정

_functool의 cmp_to_key를 반드시 체화하자!!