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]
현재 추가하려는 값이 스택에 가장 최근 들어온 값 보다 크면 최근 들어온 값을 빼준다.
이걸 어떻게 생각하지...
참고했던 블로그 링크를 첨부한다!
Programmers | 큰 수 만들기 - Python
1주차 알고리즘 스터디 - 탐욕법 (Greedy) : 프로그래머스 Level2 큰 수 만들기 접근 방식 및 풀이 과정
velog.io