티스토리 뷰

https://programmers.co.kr/learn/courses/30/lessons/42883

 

코딩테스트 연습 - 큰 수 만들기

 

programmers.co.kr

그리디 접근이다. 레벨2짜리 문제이지만 파이썬을 익히면서 하다 보니 문법 찾으면서 하느라고 조금 오래 걸렸다.

앞에서부터 스택에 넣으면서 비교한다. 만약 다음 원소가 더 크다면 사이즈가 허용하는 한 계속 빼고, 넣으면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from collections import deque
 
def solution(number, k):
    arr = [int(i) for i in number]
    stack = deque()
    strlen = len(number) - k
    for i in range(len(number)):
        if len(number) - (i + strlen) == 0:
            stack.append(arr[i])
            strlen -= 1
        elif len(stack) == 0:
            stack.append(arr[i])
            strlen -= 1
        else:
            while len(stack) > 0 and len(number) - (i + strlen) != 0:
                tmp = stack.pop()
                if tmp >= arr[i]:
                    stack.append(tmp)
                    break
                strlen += 1
            if strlen > 0:
                stack.append(arr[i])
                strlen -= 1
    answer = [str(i) for i in stack]
    return ''.join(answer)
cs
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함