[프로그래머스] 가장 큰 수

JIN·2021년 10월 7일
0

정렬 문제입니다.
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
profile
배우고 적용하고 개선하기

0개의 댓글

관련 채용 정보