코딩테스트

프로그래머스 가장 큰 수

박준희 2021. 11. 12. 16:48

https://programmers.co.kr/learn/courses/30/lessons/42746

 

코딩테스트 연습 - 가장 큰 수

0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰

programmers.co.kr

 

def solution(numbers):
    answer = ''
    tmp = [(str(x)) for x in numbers]
    tmp.sort(key=lambda x: x * 3, reverse=True)
    
    for x in tmp:
        answer += x
    
    return str(int(answer))

 

 

1.  정렬에서 x * 3를 한 이유

모든 값을 3자리 수로 만들어 정렬를 하기 위함

[3, 30, 34, 5, 9] "9534330"

위 케이스를 x * 3 없이 정렬할 경우

[9, 5, 34, 30, 3]

으로 정렬이 되어 최대 값을 만들 수 없음

 

2. 마지막 int -> str로 캐스팅을 한 이유

0, 0, 0, 0 케이스를 대응하기 위함

 

 

참고

https://jokerldg.github.io/algorithm/2021/05/06/most-big-number.html

 

프로그래머스 가장 큰 수 (python 파이썬) - Tech

프로그래머스 가장 큰 수 (python 파이썬) May 06, 2021

jokerldg.github.io