[Python] 프로그래머스(Lv2) - 가장 큰 수

Kerri·2021년 3월 8일
0

코테

목록 보기
7/67

안녕하세요 :)
프로그래머스 정렬 문제 중의 하나인 가장 큰수 문제입니다.

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 이 될 수 있습니다 !

profile
안녕하세요 !

0개의 댓글