728x90
반응형
# [level 2] 큰 수 만들기 - 42883
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/42883?language=python3)
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr

🗝️알고리즘 분류
- 그리디
💻문제 정의
문자열로 주어진 숫자에서 일정 개수만큼 지운 후 나머지 숫자들의 조합에서 가장 큰 수를 출력하는 프로그램을 작성하는 문제이다.
💡접근 및 설계
스택을 이용하여 접근하였다. 현재 스택에 있는 수보다 큰 수가 온다면 빈 문자열에 pop하여 최종적으로 큰 수를 만드는 방식으로 접근하려 하였다.
🗒️제출 코드
def solution(number, k):
stack = []
for ix in number:
while stack and stack[-1] < ix and k > 0:
stack.pop()
k -= 1
stack.append(ix)
if k > 0: stack = stack[:-k]
return ''.join(stack)
일단 스택에 숫자를 넣는다. 만약 넣으려는 숫자가 스택의 최상단(가장 마지막에 들어간 수) 보다 크다면, 스택 내의 숫자를 제거한다.
반복을 마친 후 스택에는 가장 큰 수 조합이 남아있을 것이고, k개 만큼 제거하지 못했다면 MSB에서 k개 만큼 빼준다.
728x90
반응형
'Coding-Test > 프로그래머스' 카테고리의 다른 글
| [SQL] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (0) | 2026.03.02 |
|---|---|
| [SQL] 그룹별 조건에 맞는 식당 목록 출력하기 (0) | 2026.03.02 |
| [SQL] 오프라인/온라인 판매 데이터 통합하기 (0) | 2026.03.02 |
| [Python] Level 1 - 가장 많이 받은 선물 (0) | 2025.09.09 |
| [Java] Level1 - 문자열 내 p와 y의 개수 (2) | 2025.01.13 |