알고리즘/프로그래머스

[프로그래머스] Level2, 큰 수 만들기 (Python)

wookcode 2021. 6. 5. 13:43
728x90
반응형

문제

https://programmers.co.kr/learn/courses/30/lessons/42883?language=python3 

 

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

 

programmers.co.kr

 

코드

from itertools import combinations
def solution(number, k):
    answer = ''
    per = list(combinations(number,len(number)-k))
    result = []
    for i in per:
        result.append(int("".join(i)))
    return str(max(result))

조합을 이용하여 풀려 했으나 시간초과..

 

from itertools import combinations
def solution(number, k):
    stack = []
    for i in number:
        while stack and i > stack[-1]:
            if k > 0:
                stack.pop()
                k -= 1
            else:
                break
        stack.append(i)
    if k > 0:
        for i in range(k):
            stack.pop()
    answer = "".join(stack)
    return answer

stack을 이용하여 한개한개 값을 비교하여 pop 해주고 append해줘서 풀어야 하는 문제인 것 같다.

for문을 다돌았는데 k가 0보다 크다면 맨 뒤부터 k만큼 자릿수를 잘라주면 된다.

원하는 자릿수에 가장 큰 값을 구하면 되는데 가장 큰 수를 맨앞에 넣어놨기 때문에 맨 뒤를 뺴주면 가장 큰 수가 완성된다.

반응형