문제
https://school.programmers.co.kr/learn/courses/30/lessons/42746
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이과정
python sort 함수에서 key인자에 원하는 정렬 방식을 넣어줌으로써 다양한 정렬을 적용할 수 있다.
기본적인 정렬 컨셉은 앞의 수와 뒤의 수를 붙인 숫자와, 순서를 뒤집어서 붙인 숫자를 비교해서 전자가 크면 -1을 반환, 후자가 크면 1을 반환, 동일하면 0을 반환하여 순서를 조정하도록 하였다.
추가적으로 list를 선회하며 앞, 뒤의 수를 비교하도록 하기 위해 python 내장 패키지인 functools의 cmp_to_key를 사용했다. python 내장 함수를 이용하면 좀 더 심플하게 구현하고자 하는 로직을 짤 수 있을 것 같다.
https://sha-sha-sha.tistory.com/19
Python functools 모듈의 내장함수[기본]
functools 모듈은 python 표준 라이브러리 중 하나로써 다른 함수에 적용하거나 다른 함수를 반환하는 고차 함수를 위한 모듈이다. functools 모듈의 함수를 잘 사용한다면 더 심플하면서 풍부한 표현
sha-sha-sha.tistory.com
추가로 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
'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 |