본문 바로가기
Programming/Programmers

[프로그래머스] 큰 수 만들기(Python)

by 데이터현 2021. 10. 27.

https://programmers.co.kr/learn/courses/30/lessons/42883

 

코딩테스트 연습 - 큰 수 만들기

 

programmers.co.kr

이것저것 여러 풀이 방식으로 풀었다. 나머지 테스트는 모두 통과했지만 10번에서 시간 초과가 났다

def solution(number, k):
    result = len(number)-k
    index = 0
    answer = ''
    while k>0 and len(answer)!=result:
        max_index = number[index:index+k+1].find(max(number[index:index+k+1]))
        answer+=number[index:index+k+1][max_index]
        k-=max_index
        index += max_index+1
    return answer if k else answer+number[index:]

다른 사람 풀이를 참고했는데,

맨 처음 코드 작성할 때 이렇게 스택 활용해서 거의 동일하게 작성했는데 시간초과가 나서 위의 방식으로 시도했던 건데,그때는 틀리고 아래 방식은 맞아서 마음이 아팠다.

 

곰곰히 생각해보니 난 필요 없는 리스트 인덱싱을 사용했다.

앞으로 잘 해봐야겠다.

def solution(number, k):
    answer = [] # Stack
    
    for num in number:
        while k > 0 and answer and answer[-1] < num:
            answer.pop()
            k -= 1
        answer.append(num)
        
    return ''.join(answer[:len(answer) - k])

댓글