본문 바로가기
STUDY/코딩테스트 연습문제 풀이

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

by mhl22 2021. 8. 14.

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

 

코딩테스트 연습 - 가장 큰 수

0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰

programmers.co.kr

풀이

def solution(numbers):
    numbers = list(map(str,numbers))
    numbers.sort(key=lambda x:x*3, reverse=True)
    return str(int(''.join(numbers)))

lambda 함수

lambda 인자리스트: 표현식

>>> g = lambda x: x**2
>>> print(g(8))
64
>>>
>>> f = lambda x, y: x + y
>>> print(f(4, 4))
8

람다 정의에는 "return"문이 포함되어 있지 않다. 함수가 사용될 수 있는 곳에는 어디라도 람다 정의를 넣을 수 있으며, 위의 예 처럼 변수에 할당하여 사용할 필요는 없다.

 

위의 풀이에서 key = lambda x:x*3 을 하는 이유는 numbers 리스트의 원소들을 문자열 변환하였기 때문이다.문자열 변환한 값을 *3 해주면 똑같은 문자열이 3번 반복된다. (ex. 7 -> 777)즉, 자릿수를 맞춰서 비교해주기 위한 방법인 것이다.


참고

https://offbyone.tistory.com/73

 

파이썬 문법 5 - 람다(lambda) 함수

파이썬에서 "lambda" 는 런타임에 생성해서 사용할 수 있는 익명 함수 입니다. 이것은 함수형 프로그래밍 언어에서 lambda와 정확히 똑같은 것은 아니지만,  파이썬에 잘 통합되어 있으며 filter(), map

offbyone.tistory.com