Programmers - Lv2 - 가장 큰 수

Bomin Seo·2022년 9월 7일
0

가장 큰 수

문제 설명

0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.

예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.

0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.

제한 사항

numbers의 길이는 1 이상 100,000 이하입니다.
numbers의 원소는 0 이상 1,000 이하입니다.
정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.

Python code

def solution(numbers):
    answer = ''
    if set(numbers) == {0}:
        return "0"

    numbers = list(map(str, numbers))
    numbers.sort(key= lambda x:x*4, reverse=True)

    for i in numbers:
        answer += i
    return answer

풀이

  • 입력된 값이 모두 0인 경우 (ex. numbers = [0, 0, 0]) 0을 출력하기 위하여 리스트 내의 요소가 0 뿐이라면 0을 반환합니다.
  • 정수 상태로 비교한다면 복잡도 측면에서 좋지 않기에 str형으로 변환합니다.
  • 입력되는 요소가 0이상 1000이하이기 때문에 모든 정수를 반복하여 4자리 수 이상으로 만들고 역순으로 정렬함으로써 앞에 배치하였을 때 큰 값이 되는 요소를 앞에서부터 정렬할 수 있습니다.
profile
KHU, SWCON

0개의 댓글