[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