Notice
Recent Posts
Recent Comments
Link
나의 개발일지
[프로그래머스] Lv.2 큰 수 만들기 [Python, 파이썬] 본문
- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/42883
- Greedy
- Stack
- 현재 위치 값(p)과 이전 값(p-1)을 비교해서 이전 값이 더 작으면 빼준다.
- 제거 횟수(k)가 남아있으면 완성된 스택에서 남아있는 제거 횟수만큼 제일 뒤의 값을 빼준다.
def solution(number, k):
num = list(map(int,number)) # 문자열을 정수 리스트로 변환
stack = [] # 스택 리스트
p = -1 # 스택 포인터(위치)
for i in range(len(num)):
stack.append(num[i]) # 스택에 요소 추가
p += 1 # 스택 위치 증가
if p >= 1: # 스택에 두 개 이상 있을 때
while stack[p] > stack[p-1] and k != 0: # 현재 값보다 바로 이전 값이 작고, 제거 횟수가 있으면
stack.pop(p-1) # 작은 값을 제거
p -= 1 # 스택 위치 감소
k -= 1 # 제거 횟수 감소
if k != 0: # 제거 횟수가 남아있으면 제일 뒤의 숫자를 뺀다.
for i in range(k):
stack.pop()
return "".join(map(str, stack)) # 정수 리스트를 문자열로 변환 후 리턴
'프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv.3 이중 우선순위 큐 [Python, 파이썬] (0) | 2023.09.01 |
---|---|
[프로그래머스] Lv.3 디스크 컨트롤러 [Python, 파이썬] (0) | 2023.09.01 |
[프로그래머스] Lv.2 튜플 [ Python, 파이썬] (0) | 2023.08.30 |
[프로그래머스] Lv.2 행렬의 곱셈 [Python, 파이썬] (0) | 2023.08.29 |
[프로그래머스] Lv.2 N개의 최소공배수 [Python, 파이썬] (0) | 2023.08.29 |
Comments