[프로그래머스/파이썬] 그리디 큰 수 만들기
https://programmers.co.kr/learn/courses/30/lessons/42883
알고리즘 분류
- 그리디
문제풀이
시간초과코드:
def solution(number, k):
from itertools import combinations
lst=list(combinations(number,len(number)-k))
result=[]
for i in lst:
temp=("".join(i))
result.append(int(temp))
return (str(max(result)))
핵심 아이디어는 앞자리를 최고 큰 수로 만드는 것이다.
ex) numbers="54321", k=2
result=
['5', '4'] 2
['5', '4', '3'] 2
['5', '4', '3', '2'] 2
['5', '4', '3', '2', '1'] 2
이전에 저장했던 수(result[-1])보다 지금 저장하는 수(i)가 크면 이전에 저장했던 수를 빼내고 k-=1을 수행한다.
다 끝나고도 k가 남아있다면 result 뒤에서 남은 만큼 잘라 출력하면 된다.
참고: https://gurumee92.tistory.com/162
소스코드
def solution(number, k):
result=[number[0]]
for i in number[1:]:
while result and result[-1]<i and k>0:
result.pop()
k-=1
result.append(i)
if k>0:
result=result[:-k]
return ("".join(result))
Author And Source
이 문제에 관하여([프로그래머스/파이썬] 그리디 큰 수 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@bye9/프로그래머스파이썬-그리디-큰-수-만들기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)