Python3/프로그래머스
2022.04.09 [프로그래머스] (파이썬 python) 가장 큰 수
ian's coding
2022. 4. 9. 18:10
728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/42746#
코딩테스트 연습 - 가장 큰 수
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰
programmers.co.kr

풀이
우선 주어진 배열을 모두 문자열로 바꾸었다. 이유는 int형으로 정렬을 하면 [6, 10, 2]일 때, [10, 6, 2]로 큰 수로 나열 되기 때문이다. 그래서 문자열로 바꾸어 배열을 하게 되면 위의 상황에서는 [6, 2, 10]으로 정렬 되지만 [3, 30, 34, 5, 9]일 때, [9, 5, 34, 30, 3]으로 정렬된다. 문제는 3이 30보다 앞에 있어야 하기 때문에 정렬할 때, key=lambda x:x*3으로 해준다. 이유는 문제에서 1~1000이라고 범위가 주어졌기 때문에 길이가 1인 문자열을 3자리로 바꾸어 비교하기 위해서 이다. 그리고 만약 numbers[0]='0'이면 모든 배열의 값이 '0'이기 때문에 answer='0'을 출력해주고 아니면 배열의 값을 join을 이용해 모두 붙여 출력해준다.
1
2
3
4
5
6
7
8
9
10
|
def solution(numbers):
answer = ''
for i in range(len(numbers)):
numbers[i]=str(numbers[i])
numbers.sort(key=lambda x:x*3, reverse=True)
if numbers[0]=='0':
answer='0'
else:
answer=''.join(numbers)
return answer
|
cs |
728x90
반응형