Coding - Algo/python
[프로그래머스] 가장 큰 수 (python 파이썬)
jainn
2021. 6. 22. 17:05
728x90
문제
https://programmers.co.kr/learn/courses/30/lessons/42746
풀이 및 소스코드
처음에는 숫자들을 문자열으로 바꾼 뒤, 역순으로 정렬해서 풀려고 했으나,
[30, 3] 인 경우에는 330이 되어야 가장 큰 수가 되지만 위와 같은 방법으로 풀었을 때 303이 나와서 틀리게 된다.
따라서 *3을 해주어 숫자들을 3번씩 반복해서 아스키값 순으로 정렬될 수 있도록 해주면 된다.
[30, 3]을 *3 해주면 303030, 333이 되므로 우리가 원하는 대로 정렬이 된다.
문자열에 *n을 해주면 n번 반복한다는 걸 알게되서 뜻깊은 문제다. ㅋㅋㅋ
def solution(numbers):
answer = ''
n = list(map(str, numbers))
n.sort(key=lambda x:x*3, reverse=True)
answer = str(int(''.join(n)))
return answer
반응형