알고리즘 고득점 Kit > 정렬 > 체육복
가장 큰 수 Lv.1
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.
예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.
[제한사항]
- numbers의 길이는 1 이상 100,000 이하입니다.
- numbers의 원소는 0 이상 1,000 이하입니다.
- 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.
첫 번째 풀이 : 33.3점
def solution(numbers):
answer = ''
for i in range(len(numbers)):
numbers[i] = str(numbers[i])
numbers.sort(reverse = True)
for j in numbers:
answer+=j
return answer
- [3,30,34] 가 있을 경우 ans = '34330' 이 가장 큰 수 인데 위의 코드로 할 경우, ans = '34303'이 된
두 번째 풀이: 100점
def solution(numbers):
numbers = list(map(str, numbers))
numbers.sort(key=lambda x: x*3, reverse=True)
return str(int(''.join(numbers)))
- map을 통해 str형으로 바꿀 수 있음
- sort( key = lambda x : x*3)을 통해 3번째 자리수까지 비교 가능
- int형으로 join해서 [0,0,0]인 경우, '000'이 아닌 0이 될 수 있도록 함
- 다양한 함수를 쓰는 노력을 해야겠음
'코딩테스트 | python > 프로그래머스' 카테고리의 다른 글
| [프로그래머스 | python] 디펜스 게임 (0) | 2024.04.16 |
|---|---|
| [프로그래머스 | python] H-Index (0) | 2024.04.04 |
| [프로그래머스 | python] 주식가격 (0) | 2024.04.04 |
| [프로그래머스 | python] 가장 먼 노드 (0) | 2024.04.02 |
| [프로그래머스 | python] 올바른 괄호 (0) | 2024.03.28 |