프로그래머스_가장 큰 수_python

2021. 8. 4. 23:55코딩테스트

반응형

https://programmers.co.kr/learn/courses/30/lessons/42746#

def solution(numbers):
    numbers = sorted(list(map(str, numbers)), reverse=True)
    for i in range(1, len(numbers)):
        for j in range(i, 0, -1): 
            if numbers[j-1]+numbers[j] < numbers[j]+numbers[j-1]:
                numbers[j], numbers[j-1] = numbers[j-1], numbers[j]
            else:
                break
    result = ''.join(numbers)
    return '0' if int(result)==0 else result

[내코드]

sort reverse만 하게되면

['34', '30', '3'] 로 정렬됨. 원하는 결과값은 "34330"임.

->삽입정렬사용.

삽입정렬 : 필요할때만 위치를 바꾸므로 데이터가 거의 정렬되어 있을 때 효율적임.

join : 배열의 문자열 합치기

 

 

def solution(numbers):
    numbers = list(map(str, numbers))
    numbers.sort(key=lambda x: x*3, reverse=True)
    return str(int(''.join(numbers)))

[다른사람코드]

1의 자리만 있는 것과 10, 100의 자리도 있는 데이터의 비교방법으로 데이터를 3번 반복.

 

반응형