오늘의 인기 글
최근 글
최근 댓글
Today
Total
05-09 15:52
관리 메뉴

우노

[Sort] 프로그래머스 “가장 큰 수” Python 풀이 본문

Algorithm/Sort

[Sort] 프로그래머스 “가장 큰 수” Python 풀이

운호(Noah) 2022. 10. 24. 22:21

문제 링크

풀이

  • permutations 함수를 사용하면 시간초과가 발생합니다.
  • 해당 문제의 핵심은, 숫자들을 문자열들로 변환한 뒤 내림차순 정렬했을 때, 3이 30보다 앞에 있어야한다는 것입니다.
    • [’9’, ‘5’, ‘34’, ‘3’, ‘30’]
  • 따라서, 각 문자열들을 3번 반복한 문자열들로 변환한 뒤, 내림차순 정렬합니다.
    • [999, 555, 343434, 333, 303030]
  • 각 문자열들을 3번 반복하는 이유는, numbers의 숫자들은 0 이상 1,000 이하로 이루어져있기 때문에,
  • 각 문자열들을, 1000을 넘지 않는 가능한 최대 자리수까지 채워서 비교하기 위함입니다.

코드

def solution(numbers):

    # 각 숫자들을 문자열로 변환
    numbers = list(map(str, numbers))

    # 각 문자열을 3번 반복한 문자열로 변환한 뒤, 내림차순 정렬
    numbers.sort(key = lambda x:x*3, reverse=True)

    # 각 문자열들을 하나의 문자열로 통합
    # 모든 문자열이 0일 때(‘000’)를 처리하기 위해, 문자열을 int로 변환한 뒤 다시 str로 변환
    return str(int(''.join(numbers)))
Comments