[Programmers] 가장 큰 수 파이썬 풀이

Updated:

문제

프로그래머스 가장 큰 수 문제 링크

구현

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

오답노트

파이썬 람다식에 대해서 좀 더 공부할 필요를 느낀 문제였다.

‘0’ ~ ‘9’ 이외의 문자형 숫자는 아스키 코드로 변환이 불가능 할거라고 생각했다.

하지만 “32”, “31”의 비교시 문자 하나씩을 아스키 코드로 변환해가며 비교한다는걸 알게되었다. $($ ‘3’ vs ‘3’, ‘2’ vs ‘1’)

return str(int(''.join(numbers)))

문자열인 numbers를 정수형으로 변환한 다음 다시 문자열로 변환하여 반환했는데, numbers의 모든 값이 0인 경우를 처리하기 위해서 이다.

numbers [0, 0, 0]으로 만들수 있는 가장 큰 수는 0이기 때문에 ‘0’을 반환해야지 “000”이 반환되어선 안된다.

Leave a comment