[프로그래머스] 가장 큰 수

2022. 2. 7. 23:12Python/코딩 문제

# 문제 설명

0이상의 양의 정수로 이뤄진 배열이 주어졌을 때, 정수를 이어붙여 만들 수 있는 수 중에서 가장 큰 수를 반환해라.

단, 원소로 0이 주어질 수도 있다.

 

# 입출력 예시

입력 출력
[6, 10, 2] 6210
[3, 30, 34, 5, 9] 9534330

 

# 코드 풀이

def solution(numbers):
    # 3자리수와 비교할 때, 제대로 대소관계를 파악하려고
    snums = sorted(list(map(str, numbers)), reverse=True, key=lambda x: x*3)
    return str(int("".join(snums)))

 

# 핵심 포인트

  • Python의 str-list정렬은 첫 문자부터 차례로 오름차순 & len이 큰 것 먼저 정렬된다.
  • 정렬대상들은 그대로 두고, key매개변수는 정렬대상의 값을 변형할 수 있다.
  • 0이 여러 개 입력으로 주어질 때의 테스트 케이스도 고려해야 한다.

 

 

 

 

 

반응형