- 프로그래머스 가장 큰수 - Level 2
- 문제링크
나의 접근
첫 시도: 시간 초과
- numbers의 integer들을 string으로 타입 캐스팅 해준 후, digit 별로 나누어 2d array에 저장한다.
- numbers안의 원소에 들어갈 수 있는 최대 숫자가 1000, 즉 4자릿수이기 때문에 4번 iterate 해주며 리스트를 정렬한다
- 정렬한 리스트의 각 numbers를 합친다.
- 합친 numbers의 원소를 다시 한 번 합쳐준다.
def solution(numbers):
nums = [list(str(i)) for i in numbers] #1
sorted_list = sorted(nums ,key=lambda x: x * 3, reverse = True) #2
li2 = sum(sorted_list, []) #3
return ''.join(map(str,li2)) #4
이런 방법으로 접근했을 때 시간 초과가 났다.. 다른 풀이들과 비교해봤을 때 sorted() 함수가 아닌 sort() 함수를 썼을 때 시간초과가 나지 않는 것 같았다.
두 번째 시도 : 패스
def solution(numbers):
num = list(map(str, numbers))
num.sort(key = lambda x : x * 3, reverse = True)
return str(int(''.join(num)))
그렇다면 sort()와 sorted() 함수의 차이점이 무엇일까?
Difference between sort() and sorted()
The primary difference between the list sort() function and the sorted() function is that the sort() function will modify the list it is called on. The sorted() function will create a new list containing a sorted version of the list it is given.
sort 함수는 기존의 리스트 자체에서 정렬을 하는 데에 반해 sorted() 함수는 새로운 리스트를 생성하여 정렬한다. 이 과정에서 시간 초과 및 메모리 초과가 발생한 것 같다.
'개발공부 > algorithm' 카테고리의 다른 글
[프로그래머스][python] 전화번호 목록 (0) | 2021.04.17 |
---|---|
[프로그래머스][python] 위장 - Hash (0) | 2021.04.17 |
[백준][python]10844.쉬운계단수 - DP (0) | 2021.04.13 |
[백준][python] 9658.돌게임4 - DP (0) | 2021.04.11 |
[백준][python] 1793.타일링 - DP (0) | 2021.04.11 |