문제설명
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.
예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.
제한 사항
- numbers의 길이는 1 이상 100,000 이하입니다.
- numbers의 원소는 0 이상 1,000 이하입니다.
- 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.
입출력 예
def solution(numbers):
num = list(map(str,numbers))
num.sort(key=lambda x : x*3,reverse = True)
answer = str(int(''.join(num)))
return answer
💬 후기
'priorities의 원소는 우선순위를 나타내며 숫자가 클 수록 우선순위가 높습니다.'
이 문장을 보기 전까지 왜 B가 1위인데 순서가 CDAB인가 한참 찾았다 ^^
Tip.
1️⃣x에 3을 곱하는 이유는 1000의자리까지기 때문이다. 예를 들어, 3이랑 30을 비교해보자.
3 에 3을 곱하고 30에 3을 곱하면 333과 303030이 된다. 그러면 333이 303030보다 크다.
2️⃣ 숫자를 만든 후에 int형으로 바꾸면서 앞자리에 0을 제거하고 다시 string으로 만들어준다.
str(int'00'))이 되면 '0'으로 반환된다.
'알고리즘 문제' 카테고리의 다른 글
[Python]11052번.카드 구매하기(DP) (1) | 2023.12.06 |
---|---|
[Python]20529번.가장 가까운 세 사람의 심리적 거리(브루트포스) (2) | 2023.12.05 |
[Python] 프로세스(스택/큐) (0) | 2023.11.30 |
[Python] 기능개발(스택/큐) (0) | 2023.11.29 |
[Python] 조이스틱(그리디) (1) | 2023.11.27 |