가장 큰 수
풀이
어째 풀지 계속하다가 풀었다.
근데 하나가 계속 틀려서 보니 질문하기에서 테스트 케이스 한 개를 던져줘서 다행히 풀었다.
[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
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 Lv2 전력망을 둘로 나누기 (python) (0) | 2024.02.16 |
---|---|
프로그래머스 Lv2 연속 부분 수열 합의 개수 (python) (0) | 2024.02.15 |
프로그래머스 Lv1 햄버거 만들기 (python) (1) | 2024.02.14 |
프로그래머스 Lv1 [PCCP 기출문제] 1번 / 붕대 감기 (python) (0) | 2024.02.14 |
프로그래머스 Lv2 튜플 (python) (1) | 2024.02.13 |