우노
[Sort] 프로그래머스 “가장 큰 수” Python 풀이 본문
문제 링크
풀이
- permutations 함수를 사용하면 시간초과가 발생합니다.
- 해당 문제의 핵심은, 숫자들을 문자열들로 변환한 뒤 내림차순 정렬했을 때, 3이 30보다 앞에 있어야한다는 것입니다.
- [’9’, ‘5’, ‘34’, ‘3’, ‘30’]
- 따라서, 각 문자열들을 3번 반복한 문자열들로 변환한 뒤, 내림차순 정렬합니다.
- [999, 555, 343434, 333, 303030]
- 각 문자열들을 3번 반복하는 이유는, numbers의 숫자들은 0 이상 1,000 이하로 이루어져있기 때문에,
- 각 문자열들을, 1000을 넘지 않는 가능한 최대 자리수까지 채워서 비교하기 위함입니다.
코드
def solution(numbers):
# 각 숫자들을 문자열로 변환
numbers = list(map(str, numbers))
# 각 문자열을 3번 반복한 문자열로 변환한 뒤, 내림차순 정렬
numbers.sort(key = lambda x:x*3, reverse=True)
# 각 문자열들을 하나의 문자열로 통합
# 모든 문자열이 0일 때(‘000’)를 처리하기 위해, 문자열을 int로 변환한 뒤 다시 str로 변환
return str(int(''.join(numbers)))
'Algorithm > Sort' 카테고리의 다른 글
[Sort] 이코테 “실패율” Python 풀이 (0) | 2022.09.17 |
---|---|
[Sort] 이코테 “안테나” Python 풀이 (0) | 2022.09.17 |
[Sort] 이코테 “국영수” Python 풀이 (0) | 2022.09.17 |
[Sort] 이코테 “부품 찾기” Python 풀이 (0) | 2022.06.12 |
[Sort] 이코테 “두 배열의 원소 교체” Python 풀이 (0) | 2022.06.07 |
Comments