https://programmers.co.kr/learn/courses/30/lessons/42746
문제 설명
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.
예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.
제한 사항
- numbers의 길이는 1 이상 100,000 이하입니다.
- numbers의 원소는 0 이상 1,000 이하입니다.
- 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.
입출력 예
numbersreturn
[6, 10, 2] | 6210 | |
[3, 30, 34, 5, 9] | 9534330 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | ''' 프로그래머스 - 정렬 - 가장 큰 수 파이썬의 장점이 극대화. map(str, numbers)로 숫자로 된 배열을 문자열로 된 배열로 변환 lambda = x : 를 통해 정렬 커스터마이징. 문자열 * n 은 문자열이 n번 반복 ''.join(numbers)를 통해 배열을 그대로 문자열로 치환 이 문제의 경우 [0,0,0,0]이 주어지면 '0000'이 아닌 숫자 형식의 '0'으로 리턴되야 하기 때문에 int()를 통해 정수형으로 바꾼 후 다시 str()을 통해 문자열 반환 ''' def solution(numbers): answer = '' numbers = list(map(str, numbers)) # 숫자를 map을 활용해 문자열로 변환 후 배열로 저장 numbers.sort(key = lambda x : x*3, reverse=True) # 람다식을 이용, 각 값마다 *3 -> 문자열이 3번반복 return str(int(''.join(numbers))) | cs |
'알고리즘' 카테고리의 다른 글
[Programmers] 디스크 컨트롤러(HEAP) (0) | 2020.09.22 |
---|---|
[Programmers] 더 맵게(HEAP) (0) | 2020.09.22 |
[Programmers] N으로 표현(DP) (0) | 2020.09.21 |
[Programmers] 순위(그래프) (0) | 2020.09.18 |
[알고리즘] 다익스트라 (0) | 2020.09.18 |