[프로그래머스] 정렬 - 가장 큰 수 (Python)

Daisy 🌼·2022년 7월 31일
0

프로그래머스

목록 보기
22/36
post-thumbnail

문제출처 : 프로그래머스

1. 문제 👻

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

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

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


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

  • 입출력 예

2. My cording 👩‍💻

문제풀이 : lambda ''. join() 활용

def solution(numbers):
    numbers = list(map(str, numbers)) #문자열 변환후 리스트 재생성
    # * 3을 하는 이유는 1000이하를 맞춰주기 위함
    # 666, 101010, 222
    # 문자열의 비교는 ASCII 값으로 치환돼 정렬되며 위 숫자에서 첫번째 인덱스 값으로 비교함
    # 따라서 문자열 6, 1, 2와 비교하며 ASCII로 치환하면,
    # 86, 81. 82 -> 6 > 2 > 1 순으로 내림차순 정렬
       
    numbers.sort(key = lambda x : x * 3, reverse = True)
   
    # 문자열 내림차순 정렬한 것을 다시 정수로 변환한 후 합쳐서, 다시 문자열로 출력
    return str(int(''.join(numbers)))
    # 6210 출력
profile
세상을 이롭게하는 AI Engineer

0개의 댓글