[프로그래머스] Lv.2 큰 수 만들기

Jimeaning·2023년 3월 3일
0

코딩테스트

목록 보기
3/143

Python3

문제

제한 사항

입출력 예시

주요 포인트

스택 활용하기 (파이썬에서는 리스트로 가능)

k가 0보다 클 때까지 반복
스택 마지막 값 < i 일 때 스택 pop, k--
그렇지 않은 경우는 answer 배열에 i 값 넣기
최종 리턴 값은 전체 길이 - k 까지의 문자열 출력

최종 코드

def solution(number, k):
    answer = []
    
    for i in number:
        while k > 0 and answer and answer[-1] < i:
            # 스택 마지막 값이 i 보다 작을 때
            answer.pop()
            k -= 1
            
        answer.append(i)
        
    return ''.join(answer[:len(answer)-k])

+ 23.10.26 추가
위에 코드로 하게 되면 추가 테스트 케이스인 12번에서 계속 실패가 뜬다.
12번 테케는 k가 소진이 안 되고 종료될 때이다.

예외 테스트 케이스)
"4321", 1, "431"

이렇게 k가 소진이 안 되었을 때 k값이 무시되고 "4321"이 뜨게 된다.

def solution(number, k):
    answer = []
    
    for i in number:
        while k > 0 and answer and answer[-1] < i:
            answer.pop()
            k -= 1        
        answer.append(i)
        
    while k:
        answer.pop()
        k -= 1

    answer = ''.join(answer)
    return answer

따라서 k를 모두 소진시킬 수 있는 반복문을 만들어 최종 answer를 출력해야 한다.

profile
I mean

0개의 댓글