
우째풀지 계속하다가 풀었다.
근데 하나가 계속 틀려서 보니 질문하기에서 테스트 케이스 한개를 던져줘서 다행히 풀었다.
[0,0,0] 이면 "0" 이 나와야하는데 아무래도 "000"을 출력해서 그런가보다.
그래서 모든 숫자가 0일 때 0을 반환하게 해주었다.
def solution(numbers):
# 모든 숫자가 0인지 확인
if all(num == 0 for num in numbers):
return "0"
# 문자열로 변환
numbers = list(map(str, numbers))
# 두 숫자를 이어붙였을 때 큰 수가 되도록 정렬
numbers.sort(key=lambda x: x*3, reverse=True)
answer = ''.join(numbers)
return answer
오 나랑 똑같은 풀이다. 근데 0에 대한 것은 없네? 했는데 return 할 때 int해주고 str로 해줬다.
나도 이렇게 할 걸 멍청...
def solution(numbers):
numbers = list(map(str, numbers))
numbers.sort(key=lambda x: x*3, reverse=True)
return str(int(''.join(numbers)))
아래와 같은 풀이도 있었다.
호오 신기하다. functools도 알아놔야지
import functools
def comparator(a,b):
t1 = a+b
t2 = b+a
return (int(t1) > int(t2)) - (int(t1) < int(t2)) # t1이 크다면 1 // t2가 크다면 -1 // 같으면 0
def solution(numbers):
n = [str(x) for x in numbers]
n = sorted(n, key=functools.cmp_to_key(comparator),reverse=True)
answer = str(int(''.join(n)))
return answer