문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/42746
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제풀이
숫자들을 조합해서 가장 큰 수를 찾는 문제!
str으로 바꾸고 정렬하면 '9' > '10' 처럼 아스키코드로 정렬을 해주기 때문에 문자열로 정렬해 주었다.
but) '3', '32'처럼 앞자리 수가 같으면 '32'가 더 크기 때문에 이를 해결해 주어야 한다.
323보다 332가 크기 때문!!
그래서 모든 문자열에 3을 곱하여 모든 문자열의 크기가 3이 넘어가게 만들어 주었다!
그 이유는 입력받는 숫자의 최댓값이 1000이기 때문이다.
그렇게 3을 곱해서 정렬을 해준 뒤 다시 곱한 부분을 떼어주면 풀린다...
정렬만 사용하는 문제인데도 생각하는데 꽤 오래걸렸다..
def solution(numbers):
answer = ''
numbers = [str(number) * 3 for number in numbers]
numbers.sort(reverse=True)
for n in numbers:
answer += n[0:len(n) // 3]
return str(int(answer))