[Programmers] - 가장 큰 수(정렬)

DDANDARA ㅣ 2020. 9. 21. 21:59

https://programmers.co.kr/learn/courses/30/lessons/42746

 

코딩테스트 연습 - 가장 큰 수

0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 ��

programmers.co.kr

문제 설명

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