-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path0206.py
More file actions
12 lines (12 loc) · 1.58 KB
/
0206.py
File metadata and controls
12 lines (12 loc) · 1.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
#https://school.programmers.co.kr/learn/courses/30/lessons/42746
def solution(numbers):
numbers = list(map(str, numbers)) #숫자로 이루어지 numbers리스트를 map을 이용해 한번에 str리스트로 바꿔줌
numbers.sort(key=lambda x: x * 3, reverse=True) #sort를 하는 우리는 조건 3자리수 이하이기에 x*3을 한 이후 진행한다.
#여기서 우리는 이미 str로 받아왔기 때문에 크기 비교는 ASCII코드의 크기 비교로 진행된다. 아스키코드의 비교는 숫자의 문자열은 첫번째 인덱스를 비교함으로써 판단한다.
#즉 10 6 2 가 있으면 6 > 2 > 10 순이다. 기본적으로 오름차순이기에 우리는 내림차순으로 revese = True로 설정해주면서 크기를 바꾼다.
#우리가 위같이 크기를 비교하는 이유는 결국 우리는 자리수에 들어오는 제일 앞자리의 크기를 비교할 필요가 있어서이다.
# #예를 들면 6 10 2 = 6102, 6 2 10 = 6210 이기에 두번째 자리에 오는 숫자의 제일 앞자리 숫자의 크기가 중요한것이다.
return str(int(''.join(numbers)))
#이제 다시 join을 통해 문자열을 합쳐주자 여기서 우리가 int로 한다음에 왜 다시 str로 출력하냐 0일 경우의 테스트경우 때문이다
#예를 들면 "0000"은 그대로 출력되기 때문에 int바꾸면서 "0"으로 바꿔주는 것이다.
#나는 처음에 Permutations로 풀었다, 하지만 시간초과가 나면서 실패했다. 이 풀이는 정답을 보고 이해한것이다. 다시 복습할 때는 풀 수 있기를