정렬 문제입니다.
1번째 접근 방식 : 계수정렬 후 리스트의 개수가 2개 이상이면 맨 첫번째 수를 가장 많은 문자열 수에 맞추어 채워준 후 정렬
예외)45, 454
정답에 접근하는 방식 :
lambda 이용 문자열 비교
'454545' , '454454454' 는 전자가 더 크다 .
i.sort(key = lambda x: x* 3, reverse = True)
예외) '000' 일 때 출력은 '0'
문제 풀이 법 :
1. 입력값을 str으로 변환합니다.
2. 각 입력값의 str[0] 값을 store = [[] for _ in range(10)] 리스트에 저장합니다.
3. store 값이 두개 이상이면, 람다 식을 이용해서 문자열 정렬합니다.
4.store를 돌면서 리스트 안에 있는 값을 더해줍니다 (문자열 덧셈)
5. answer =='000'형식이면 '0' 을 반환합니다 .
def solution(numbers):
store = [[] for _ in range(10)]
numbers = list(map(str, numbers))
# print(numbers)
for i,v in enumerate(numbers):
store[int(v[0])].append( v)
for index, i in enumerate(store):
if len(i)>= 2:
i.sort(key = lambda x : x * 3, reverse= True)
store[index] = i
store.reverse()
answer =''
for i in store:
for j in i:
answer += j
cnt = 0
for i in answer:
if i == '0':
cnt += 1
if cnt == len(answer):
answer = '0'
return answer