728x90
> 자료구조 활용 - 스택, 큐, 해쉬, 힙 (스택 편)
: 스택은 LIFO
📖 문제 : 가장 큰 수
선생님은 현수에게 숫자 하나를 주고, 해당 숫자의 자릿수들 중 m개의 숫자를 제거하여 가장 큰 수를 만들라고 했습니다.
여러분이 현수를 도와주세요.(단 숫자의 순서는 유지해야 합니다)
만약 5276823 이 주어지고 3개의 자릿수를 제거한다면 7823이 가장 큰 숫자가 됩니다.
입력설명
첫째 줄에 숫자(길이는 1000을 넘지 않습니다)와 제가해야할 자릿수의 개수가 주어집니다.
출력설명
가장 큰 수를 출력합니다.
입력예제 1
5276823 3
출력예제 1
7823
입력예제 2
9977252641 5
출력예제 2
99776
import sys
num, m = map(int, input().split())
num = list(map(int, str(num))) # 하나의 수를 str으로 자리수별로 접근한 후, int로 바꾸어 list로 저장
stack = []
for x in num:
while stack and m>0 and stack[-1]<x:
stack.pop()
m-=1
stack.append(x)
if m!=0:
stack = stack[:-m]
result=''.join(map(str, stack))
pring(result)
#for x in stack:
# print(x,end='')
⭐️ Point ! ⭐️
- num = list(map(int, str(num)))
num = 9830291 이란 수를 str '9', '8', '3', '0', '2', '9', '1'을 int로 바꿔서 리스트로 넣음. - stack = stack[:-m]
문자열을 (0)~(-m) 까지 넣는다. - result = ''.join(map(str, stack))
stack의 리스트의 원소들을 하나의 string값으로 result에 넣는다.
출처
- 인프런 : 파이썬 알고리즘 문제 풀이
728x90
'Algorithm (Python, Java, SQL) > Inflearn Study' 카테고리의 다른 글
[Python Algorithm] 자료구조(스택) - 후위표기식 만들기 (1) | 2023.03.22 |
---|---|
[Python Algorithm] 자료구조(스택) - 쇠막대기 (1) | 2023.03.22 |
[Python Algorithm] 그리디 알고리즘 - 역수열 (1) | 2023.03.21 |
[Python Algorithm] 그리디 알고리즘 - 증가수열 만들기(그리디) (1) | 2023.03.21 |
[Python Algorithm] 그리디 알고리즘 - 침몰하는 타이타닉 (1) | 2023.03.20 |