세용용용용 2023. 8. 14. 17:06

코딩테스트 연습 - 가장 큰 수 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

나의 코드

from itertools import permutations

def solution(numbers):
    answer = ''
    max_num = 0
    for i in permutations(numbers, len(numbers)):
        if int(''.join(map(str,i))) > max_num:
            max_num = int(''.join(map(str,i)))
    answer = str(max_num)
    #print(answer)
    return answer
solution([3, 30, 34, 5, 9])

타임 아웃....

순열로 풀면 될거같아서 풀어봤지만  시간초과 발생...

 

수정된 코드

def solution(numbers):
    answer = ''
    # numbers를 문자열로 바꿔줌
    numbers = list(map(str, numbers))
    # *3을 해준뒤 정렬을 하자 ,number의 원소가 1000이하 이기 떄문
    numbers = sorted(numbers, key=lambda x : x*3, reverse=True)
   
    #정렬해준 리스트를 문자열로 바꾸면 정답..
    answer = str(int(''.join(numbers)))
    #print(answer)
    return answer
solution([6,10,2])