Algorithm/Programmers
[프로그래머스] 가장 큰 수
밍츠
2022. 7. 1. 17:55
문제 : 가장 큰 수
https://programmers.co.kr/learn/courses/30/lessons/42746#
코딩테스트 연습 - 가장 큰 수
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰
programmers.co.kr
나의 풀이
1. permutation (순열) 을 이용해서 풀려했는데 시간초과
permutation 시간 복잡도 O(N!)
2. 문자열로 변경하고 reverse로 해서 이어붙이는 방법을 생각했는데 30을 3보다 크다고 판단한다.
정답 풀이
def solution(numbers):
numbers=list(map(str,numbers))
numbers.sort(key=lambda x:x*3, reverse=True)
return str(int("".join(numbers)))
- sort로 정렬할 때 key로 정렬 기준을 설정한다.
- reverse = True : 내림차순
- "".join(리스트) : 리스트에 있는 문자열을 합쳐준다.
ex) 30 3 을 비교할 때 아래와 같이 자리수로 비교하여 3이 더 큰 수로 판단한다.
303030
333
-> 3 > 30
ex) 9 91 999
999
919191
999999999
-> 999 > 9 > 91