프로그래머스의 가장 큰 수라는 문제를 풀어보았다.
이 문제는 숫자배열이 주어졌을 때 숫자를 이어붙어서 가장 큰 숫자를 만드는 문제였다.
처음에 이 문제를 보고 일반적인 사전순서대로의 정렬을 사용하면 ["656", "65"]의 경우 ["65", "656"]으로 정렬이 되지만 이 문제에서는 ["656", "65"]형태로 정렬되야함으로 새로운 정렬 방식을 적용해야 한다고 생각하였다.
그래서 새롭게 병합 정렬을 정의하여 문제를 아래와 같이 해결하였다.
https://github.com/SIDED00R/Code_training
GitHub - SIDED00R/Code_training: This is a auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://git
This is a auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - GitHub - SIDED00R/Code_training: This is a auto push repository fo...
github.com
하지만 이러한 방법 외에도 cmp_to_key() 함수를 이용해서 새롭게 정렬을 만들 수 있다는 것을 알게 되었다.
일반적으로 sorted()에서 key의 파라미터로 lambda 함수를 이용해 원소를 정렬 하는데
import functools
먼저 functools 모듈을 가져와 cmp_to_key를 쓸 수 있게 하고
def compare(a, b):
if a > b:
return 1
elif a < b:
return -1
else:
return 0
key=functools.cmp_to_key(compare)
이와 같이 key값에 cmp_to_key(내가 만든 정렬 규칙)을 하면 나의 커스텀 정렬이 된다.
이때 compare함수에서 1이 출력 된다면 앞의 숫자가 나의 정렬 기준에서 더 큰 숫자이고, -1이 출력 된다면 뒤의 숫자가 더 큰 숫자라는 것을 의미한다.