일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- Level2
- 코딩테스트
- 코딩
- 연습문제
- time complexity
- 데이터분석
- 시간복잡도
- CodingTest
- python
- lv4
- mysql
- Stack
- programmers
- itertools
- 프로그래머스
- 완전탐색
- 코테
- level4
- 조합
- import re
- coding test
- 파이썬
- Queue
- BFS
- lambda
- collections
- sql
- coding
- join
- counter
- Today
- Total
ror_coding
[Programmers] 가장 큰 수 - 42746 본문
728x90
728x90
lstrip과 lambda x : x*3 이용하기 !
제한 사항을 잘 읽고 활용하여 풀자.
Question
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.
예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.
제한 사항
numbers의 길이는 1 이상 100,000 이하입니다.
numbers의 원소는 0 이상 1,000 이하입니다.
정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.
Point
- 제한 사항에서 numbers의 원소가 1000이하이기 때문에 문자열에 *3을 곱해서 모든 수가 4자리 이상이 되게 만듦.
- 이를 비교하여 역순으로 정렬하면 답으로 붙일 원소로 나열됨.
- 이 원소들을 string type으로 만든 값이 '0'으로 시작할 수 있기 때문에 lstrip 해줌.
- (이때 모든 수가 0이라면 '' (빈 문자열)이 되기 때문에 '0'을 return 해줌.
Code : After
def solution(numbers):
answer = ''.join(sorted([str(i) for i in numbers], key = lambda x : x*4, reverse = True))
return answer if len(answer)!=answer.count('0') else '0'
Code : Before
def solution(numbers):
numbers = sorted([str(n) for n in numbers], key = lambda x : x*3, reverse=True)
return (''.join(numbers)).lstrip('0') if (''.join(numbers)).lstrip('0')!='' else '0'
# return str(int(''.join(numbers)))
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/006.gif)
now me
On my github
728x90
'Algorithm > Python' 카테고리의 다른 글
[Programmers] 큰 수 만들기 - 42883 (0) | 2024.12.12 |
---|---|
[Programmers] 소수 찾기 - 42839 (0) | 2024.12.12 |
[Programmers] 2개 이하로 다른 비트 - 77885 (0) | 2024.12.11 |
[Programmers] 2 x n 타일링 - 12900 (0) | 2024.12.11 |
[Programmers] 더 맵게 - 42626 (0) | 2024.12.08 |