큰 수 만들기 - python

고태희·2021년 12월 1일
0

알고리즘

목록 보기
3/15

문제설명

제한조건

예시

나의 풀이

def solution(number, k):
    answer = []
    cnt = 0
    
    for n in number:
        while answer and cnt < k and answer[-1] < n:
            answer.pop()
            cnt += 1
        answer.append(n)
    return ''.join(answer)

number에서 하나씩 answer 배열에 집어넣을 때 배열에 더 작은 값이 있으면 없을때까지 pop()

pop 횟수를 k와 같을때까지 위 작업 반복

결과

테스트 케이스 하나가 틀려서 91.7점

for문을 빠져나왔을 때 cnt < k 인 경우가 발생할 수 있다.
따라서 for문 뒤에 밑의 코드를 추가해줌

    while cnt < k:
        answer.pop()
        cnt += 1

다른사람 풀이

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

cnt 변수를 추가하지 않고 k변수를 하나씩 줄여나가는 방식으로 하였다

for num in number[1:]

1번 인덱스부터 for .. in 구문 사용하는 법

0개의 댓글