티스토리 뷰

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만큼 자릿수를 잘라주면 된다.

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

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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