728x90
반응형
1. 문제 설명
2. 풀이과정
해당 문제는 숫자 문자열에서 특정 숫자를 제거했을 때 가장 큰 수를 만드는 문제이다.
숫자의 위치를 바꿀 수는 없으므로 앞 숫자가 커야 한다.
최종 큰 수를 저장할 리스트를 만들고 숫자 문자열에서 숫자를 하나씩 불러오며 이전에 있는 값보다 크면 바로 이전 값을 제거하고 새로 불러온 숫자를 추가한다.
이때 제거할 문자가 더 이상 없거나 리스트의 원소 개수가 최종 출력할 자리 수와 동일하면 종료한다.
- 최종 큰 숫자를 저장할 리스트를 생성한다. stack = list()
- 입력받은 숫자를 하나씩 불러오며 for i in number
- 만약 리스트가 비어있다면 if (not stack)
- 불러온 숫자를 리스트에 추가한다. stack.append(i)
- 반면에 리스트가 비어있지 않다면 else
- 리스트의 마지막 원소 값이 불러온 숫자보다 작거나 제거해야 할 숫자가 남아있으면 while (stack[-1] < i) and (k > 0)
- 리스트의 마지막 원소를 제거하고 stack.pop()
- 숫자를 하나 제거했으므로 제거할 숫자의 개수를 줄인다. k -= 1
- 만약 제거한 뒤 리스트가 비어있거나 제거할 숫자가 더 이상 없으면 if (not stack) or (k <= 0)
- 반복을 종료한다. break
- 제거하는 반복이 종료되면 불러온 숫자를 추가한다. stack.append(i)
- 만약 리스트의 원소 개수가 출력할 숫자의 자리 수와 동일하면 if (len(stack) == len(number) - k)
- 종료한다. break
- 리스트에 최종적으로 저장된 숫자를 하나의 문자열로 이어 저장한다. answer = ''.join(stack)
반응형
3. 소스코드
def solution(number, k):
answer = ''
stack = list()
for i in number:
if (not stack):
stack.append(i)
else:
while (stack[-1] < i) and (k > 0):
stack.pop()
k -= 1
if (not stack) or (k <= 0):
break
stack.append(i)
if (len(stack) == len(number) - k):
break
answer = ''.join(stack)
return answer
728x90
반응형
'프로그래머스 > Python' 카테고리의 다른 글
[프로그래머스] 스티커 모으기(2) - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.11.01 |
---|---|
[프로그래머스] 124 나라의 숫자 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.30 |
[프로그래머스] 연속된 부분 수열의 합 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.28 |
[프로그래머스] 두 큐 합 같게 만들기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.26 |
[프로그래머스] 삼각 달팽이 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.22 |
[프로그래머스] 베스트앨범 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.20 |
[프로그래머스] 쿼드압축 후 개수 세기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.18 |
[프로그래머스] 전력망을 둘로 나누기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.15 |