Coding Test/Python

[프로그래머스] 큰 수 만들기 (level2, python)

lim.dev 2024. 1. 23. 18:09

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

아이디어

처음에는 그냥 구현을 했는데 테케 8번, 10번에서 자꾸 오류가 났다. 

def solution(number, k):
    i = 0
    while k > 0:
        if not stack:
            stack.append(number[i])

        j = i + 1
        if number[i] < number[j]:
            number = number[:i] + number[i+1:]
            k -= 1
            i = 0
            continue
        i += 1
    
    return number

그래서 검색을 해보니 스택을 사용하는 문제였다.

 

전체 코드

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) if k == 0 else ''.join(answer)[:-k]

현재 추가하려는 값스택에 가장 최근 들어온 값 보다 크면 최근 들어온 값을 빼준다. 

이걸 어떻게 생각하지...

 

참고했던 블로그 링크를 첨부한다!

https://velog.io/@soo5717/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%ED%81%B0-%EC%88%98-%EB%A7%8C%EB%93%A4%EA%B8%B0-%ED%8C%8C%EC%9D%B4%EC%8D%AC

 

Programmers | 큰 수 만들기 - Python

1주차 알고리즘 스터디 - 탐욕법 (Greedy) : 프로그래머스 Level2 큰 수 만들기 접근 방식 및 풀이 과정

velog.io