안녕하세요 :)
프로그래머스 정렬 문제 중의 하나인 가장 큰수 문제입니다.
https://programmers.co.kr/learn/courses/30/lessons/42746
첨에 이렇게 풀었다가 역시 시간초과가 납니다 ..
import itertools
def solution(numbers):
permutation_list = list(itertools.permutations(numbers))
val_max = -1
for item in permutation_list:
item = list(map(str, item))
item = int(''.join(item))
if val_max == -1 or val_max < item:
val_max = item
return str(val_max)
여기서 제한사항 numbers 의 원소는 1000이하 이기 때문에 x*3 한거랑 비교해서 sort 하면 답이 나오게 됩니다 ….
def solution(numbers):
numbers = list(map(str, numbers))
numbers.sort(key=lambda x: x*3, reverse=True)
return str(int(''.join(numbers)))
이 아이디어를 미처 생각하지 못했네요 ..!
참고한 글은 https://dailyheumsi.tistory.com/102 입니다.
아이디어만 있으면 3줄짜리 문제라고 생각했는데 진짜였네요. ㅎㅎ
numers = [3, 30, 34, 5, 9]
라고 할때, 9 5 한다음 3을 뽑을지 34를 뽑을지 결정해야되죠.
이때 343434 > 333 (str 기준) 이기 때문에 34 를 뽑고…
그 다음 3 이랑 30 중에서 뽑을지 결정할때
333 > 303030 이기 때문에 3을 뽑고 30을 뽑게 되죠.
그래서 정답은 9534330 이 될 수 있습니다 !