728x90
반응형
문제
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.
예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.
코드
def solution(numbers):
new_numbers = list(map(str, numbers))
new_numbers.sort(key = lambda x : x * 3, reverse=True)
return str(int("".join(new_numbers)))
import functools
def comparator(a, b):
s1 = a + b
s2 = b + a
return (int(s1) < int(s2)) - (int(s1) > int(s2))
def solution(numbers):
new_numbers = list(map(str, numbers))
new_numbers = sorted(new_numbers, key=functools.cmp_to_key(comparator))
return str(int(("".join(new_numbers))))
메모
처음엔 리턴 값에 str과 int 함수를 붙이지 않고 그냥 출력해도 맞는가 싶더니..
제출 후 채점하니까 테스트케이스 11번에서 오류가 났다.
"0000" 같은 문자열을 "0" 으로 출력하지 못하는 문제였다.
그래서 int를 붙여 0으로 만들어준 후에 다시 str를 붙여야했다.
https://school.programmers.co.kr/learn/courses/30/lessons/42746?language=python3
728x90
반응형
'코딩테스트' 카테고리의 다른 글
[프로그래머스 Lv.2] 2022 카카오 Tech 인턴쉽 - 두 큐 합 같게 만들기 (2) | 2024.12.12 |
---|---|
[프로그래머스 Lv.2] 소수 찾기 (완전 탐색) @ (1) | 2024.12.12 |
[프로그래머스 Lv.1] 체육복 (그리디) (3) | 2024.12.12 |
[프로그래머스 Lv.2] 다리를 지나는 트럭 (스택/큐) (1) | 2024.12.11 |
[프로그래머스 Lv.2] 큰 수 만들기 (그리디) (0) | 2024.12.11 |