[ Programmers ] 큰 수 만들기

ayoung0073·2021년 4월 16일
0

programmers

목록 보기
6/10
post-thumbnail


문제 링크



def solution(number, k):
    answer = []
    
    length = len(number)
    k = length - k
    start_idx = 0
    
    while k != 0:
        end_idx = length - k
        max_idx = start_idx
        
        for i in range(start_idx + 1, end_idx + 1):
            if number[max_idx] < number[i]:
                max_idx = i
            if number[i] == '9': # 테스트 10 통과 기준
                break  
                
        start_idx = max_idx + 1
        k -= 1
        answer.append(number[max_idx]) 
        
    return ''.join(str(i) for i in answer)

아이디어는 잘 떠올렸다고 생각했는데 테스트 10에서 계속 시간초과.. 나서 좀 멘붕

	answer.append(number[max_idx])       
return ''.join(str(i) for i in answer)

이 코드가 원래는

	answer += number[max_idx]
return answer

이렇게 작성했는데, join문이 더 시간 단축된다해서 수정했다
하지만 똑같은 시간초과

알고보니 999..99999 케이스를 생각해야했다.
9가 한 자리 숫자 중 가장 큰 수이기 때문에 그 다음을 볼 필요 없이 break를 하면 되었다.
이걸 생각하자 하는 마음에 업로드를 한다.
그니까 복습해야해

profile
백엔드 공부 -ing

0개의 댓글