문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/42746
문제 설명
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 함수를 작성
제한 사항
- numbers의 길이는 1 이상 100,000 이하입니다.
- numbers의 원소는 0 이상 1,000 이하입니다.
- 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.
풀이
numbers 리스트를 문자로 변환하여 정렬을 하면 되는데,
['3', '30'] 과 같은 리스트는 ['3', '30'] 로 정렬되어, join하게 되면 '330' 이 되어야 하지만,
조건 없이 정렬하게 되면 ['30', '3'] 로 정렬되어 '303' 처럼 변환이 되어 주어진 문제와 맞지 않은 상황이 발생한다.
- numbers 원소는 1000 이하이기 때문에, 길이가 1인 문자 * 3 하게 되면 모든 원소와 비교할 수 있게 된다.
- numbers 원소가 [0, 0] 일 경우, 정렬 후 join을 하게 되면 '00' 이 되므로, int형으로 변환한 다음 다시 문자로 변환해주어야한다.
✅ Code - 성공
def solution(numbers):
answer = ''
numbers = [str(n) for n in numbers]
numbers.sort(key = lambda x:x*3, reverse = True)
return str(int(''.join(numbers)))
'알고리즘 문제 > 프로그래머스_Lv2 도장깨기' 카테고리의 다른 글
[프로그래머스] 소수 찾기 (Python) (1) | 2024.05.16 |
---|---|
[프로그래머스] H-Index (Python) (0) | 2024.05.13 |
[프로그래머스] 더 맵게 (Python) (1) | 2024.05.09 |
[프로그래머스] 프로세스 (Python) (0) | 2024.05.08 |
[프로그래머스] 주식가격 (Python) (0) | 2024.03.27 |