Python으로 구현한 42883번 큰 수 만들기 문제 풀이입니다.
https://programmers.co.kr/learn/courses/30/lessons/42883
def solution(number, k) :
stack = [number[0]]
for num in number[1:] :
# stack과 k가 0보다 크고, stack의 마지막 요소가 num보다 작을 경우 반복
while len(stack) > 0 and k > 0 and stack[-1] < num :
k -= 1
stack.pop()
stack.append(num)
if k > 0 :
stack = stack[:-k]
return ''.join(stack)
1. number 문자열의 첫번째 문자를 stack 리스트에 할당한다.
2. 반복문으로 통해 number 문자열의 두 번째 문자를 하나씩 확인하며,
stack과 k가 0보다 크고 stack의 마지막 요소가 현재 확인하고 있는 수보다 작을 경우 k를 1 감소시키고 stack의 마지막 요소를 제거하는 작업을 반복한다.
3. while문을 빠져나오면 stack에 현재 num 값을 추가한다.
4. 모든 문자를 확인하여 처리하는 작업을 마쳤으면 k값을 확인하고, k가 0보다 크다면 stack[:-k]를 stack에 할당한다.
5. 최종적으로 stack의 요소를 이어붙인 문자열을 반환한다.
'프로그래머스(Python) 풀이 > Level.2' 카테고리의 다른 글
프로그래머스(Python) 42583번 다리를 지나는 트럭 풀이 (0) | 2022.05.07 |
---|---|
프로그래머스(Python) 42578번 위장 풀이 (0) | 2022.05.06 |
프로그래머스(Python) 12905번 가장 큰 정사각형 찾기 풀이 (0) | 2022.05.06 |
프로그래머스(Python) 17686번 [3차] 파일명 정렬 풀이 (0) | 2022.05.06 |
프로그래머스(Python) 17687번 [3차] n진수 게임 풀이 (0) | 2022.05.06 |