[프로그래머스]level2-가장 큰 수-Python[파이썬]

s2ul3·2022년 10월 7일
0

문제설명

문제링크

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

알고리즘

  1. numbers 내에 모든 원소들을 str 형태로 바꿔준다.
  2. 각 원소들을 정렬해준다.
  • 정렬기준 : 각 원소들을 4번반복했을 때 앞에서부터 4개의 문자열의 값이 큰 순서로 정렬
    ex) 9, 991 이면 9에다가 4을 곱하면 9999, 991991991로 9999가 9919보다 더 크므로 9가 991보다 앞에 정렬됨.
    ❓4를 곱하는 이유❓ : 각 원소들은 1000이하의 숫자이므로

    ✔문자열 정렬✔
    리스트와 튜플과 마찬가지로 첫번째 원소를 기준으로 정렬 -> 두번째 원소를 기준으로 정렬 -> 세번째 원소를 기준으로 정렬 ...

코드

def solution(numbers):
    str_numbs = list(map(str, numbers))
    str_numbs.sort(key = lambda x: (x*4)[:4],reverse = True)
    ans = ''.join(str_numbs)
   # numbers가 [0, 0, 0 ..., 0]인 경우(즉 ans ='000...0'인 경우)  
   # --> '0'을 return해야한다.
    if ans == '0' * len(numbers):
        return '0'
    return ans
profile
statistics & computer science

0개의 댓글