
문제 풀이
입출력 예시를 보면 가장 왼쪽의 자릿수가 클수록 앞으로 오는 것을 알 수 있습니다.
- 6, 10, 2에서는 6>2>10 이므로 6210
- 3, 30, 34, 5, 9에서는 9>5>34>3>30인데 34가 왜 3보다 먼저 나오느냐? 에서 해당 문제의 정답이 나오게 됩니다.
- 34와 3은 자릿수가 다르기에 비교할 수 없다고 생각하겠지만 같은 숫자로 같은 자리수로 만들어주면 답을 구할 수 있습니다. 34와 3의 경우에는 34 vs 33이 되겠네요. 30 vs 3의 경우는 30 vs 33이므로 반복해서 비교하며 정렬하면 됩니다.
- 따라서 자릿수가 다를 경우에도 해당 숫자를 반복해서 더 큰 수로 만든 다음 정렬해주면 풀리게 됩니다.
- 다만 numbers의 원소 전부가 0인 경우도 있기 때문에 정렬 후 가장 큰 자리수가 0인 경우에는 0을 출력하게 만들면 됩니다.
from itertools import permutations
def solution(numbers):
answer = ''
numbers = list(map(str, numbers))
numbers.sort(key = lambda x: x*3, reverse = True)
answer = ''.join(numbers)
if answer[0] == '0':
return "0"
return answer반응형
'프로그래머스 - Python > Level 2' 카테고리의 다른 글
| [프로그래머스 LV.2] 의상 (0) | 2026.02.19 |
|---|---|
| [프로그래머스 LV.2] 멀리 뛰기 (0) | 2026.02.09 |
| [MySQL LV.2]동명 동물 수 (0) | 2026.01.14 |
| [프로그래머스 LV.2] 광물 캐기 (1) | 2026.01.08 |
| [프로그래머스 LV.2] N개의 최소공배수 (0) | 2026.01.07 |