728x90
반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/42746
풀이과정
python sort 함수에서 key인자에 원하는 정렬 방식을 넣어줌으로써 다양한 정렬을 적용할 수 있다.
기본적인 정렬 컨셉은 앞의 수와 뒤의 수를 붙인 숫자와, 순서를 뒤집어서 붙인 숫자를 비교해서 전자가 크면 -1을 반환, 후자가 크면 1을 반환, 동일하면 0을 반환하여 순서를 조정하도록 하였다.
추가적으로 list를 선회하며 앞, 뒤의 수를 비교하도록 하기 위해 python 내장 패키지인 functools의 cmp_to_key를 사용했다. python 내장 함수를 이용하면 좀 더 심플하게 구현하고자 하는 로직을 짤 수 있을 것 같다.
https://sha-sha-sha.tistory.com/19
추가로 list의 모든 값이 0인 경우 "0000.."이 되는 결과를 "0"으로 반환하는 예외 처리를 적용 해 주어야 한다.
Script
from functools import cmp_to_key
def compare(x, y):
result = int(str(x)+str(y)) - int(str(y)+str(x))
if result > 0:
return -1
elif result == 0:
return 0
else:
return 1
def solution(numbers):
result = sorted(numbers, key=cmp_to_key(compare))
answer = ''.join([str(x) for x in result])
answer = '0' if int(answer) == 0 else answer
return answer
728x90
반응형
'Coding Test' 카테고리의 다른 글
[Programmers] 더 맵게 (0) | 2022.11.01 |
---|---|
[Programmers] 올바른 괄호 (0) | 2022.09.14 |
[Programmers] 도둑질 (0) | 2022.08.04 |
[Programmers] 기능개발 (0) | 2022.07.20 |
[Programmers] 포켓몬 (0) | 2022.07.19 |