본문 바로가기

코딩

프로그래머스 - 코딩테스트 고득점 Kit - 정렬 - 가장 큰 수 (python) (실패...)

728x90

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

from itertools import *

def sort(List):
    save=[]
    tupl = list(permutations(List, len(List)))
    for i in range(len(tupl)):
        List = list(tupl[i])
        save.append(''.join(List))
    save.sort(reverse=True)
    return save[0]


def solution(numbers):
    answer = ''
    tmp = map(lambda x: str(x), numbers)
    List = list(tmp)
    List.sort(reverse=True)
    old = ''.join(List)
    if List.count('0')==len(List):
        return '0'
    save = []
    tmp = [List[0]]
    for i in range(1,len(List),1):
        if List[i-1][0]==List[i][0]:
            tmp.append(List[i])
        else:
            save.append(tmp)
            tmp = [List[i]]
    save.append(tmp)
    
    answer=''
    for i in range(len(save)):
        answer = answer + sort(save[i])

    return answer

[979, 97, 978, 81, 818, 817] 해당 케이스 안 됨

def sort(List):
    old = ''.join(List)
    while True:
        for i in range(len(List)-1,0,-1):
            diff=len(List[i-1]) - len(List[i])
            if diff > 0: 
                if (List[i]+List[i][len(List[i])-1]*diff) >= List[i-1]:
                    tmp = List
                    st = ''.join(tmp)
                    k=tmp.pop(i)
                    tmp.insert(i-1, k)
                    if st < ''.join(tmp):
                        List = tmp
                        
        if old == ''.join(List):
            return ''.join(List)
        else:
            old = ''.join(List)


def solution(numbers):
    answer = ''
    tmp = map(lambda x: str(x), numbers)
    List = list(tmp)
    List.sort(reverse=True)
    old = ''.join(List)
    if List.count('0')==len(List):
        return '0'
    save = []
    tmp = [List[0]]
    for i in range(1,len(List),1):
        if List[i-1][0]==List[i][0]:
            tmp.append(List[i])
        else:
            save.append(tmp)
            tmp = [List[i]]
    save.append(tmp)
    
    answer=''
    for i in range(len(save)):
        save[i]=sort(save[i])
        answer = answer + ''.join(save[i])

    return answer