큰 수 만들기
코딩테스트 연습 > 탐욕법 > 큰 수 만들기
https://programmers.co.kr/learn/courses/30/lessons/42883
len(number)-K 의 가짓수만큼 combinations를 이용하여 list를 구성 한 뒤 max값을 return하는 방법을 구상했습니다..만 두개의 테스트케이스에서 시간초과가 발생했습니다.
# 1st trial : time over
# Input value
number = '1924'
k = 2
# Import module
from itertools import combinations
''.join(max(set(combinations(number,len(number)-k))))
첫번째 시도에서 max(set())을 이용한 것이 문제였나 싶어 아래와 같이 설정했으나, 위의 과정과 유사하게 시간초과가 발생했습니다.
# 2nd trial : time over
# Input value
number = '1924'
k = 2
answer = '' # Set initial value
# Import module
from itertools import combinations
for c in list(combinations(number,len(number)-k)):
if answer == '' or int(answer) < int(''.join(c)):
answer = ''.join(c)
answer
모듈을 사용하지않고 문제 구상에서 제안한 흐름에 맞추어 코드를 작성하였습니다.
# 3rd trial
# Input value
number = '1924'
k = 2
answer = [] # Set initial value
for n in number: # Consider numbers's elements
while answer and answer[-1] < n and k > 0: # Use while when list answer != [] and answer[-1]'s value is smaller than n and number of K != 0
k -= 1 # K -=1
answer.pop() # pop value
answer.append(n) # append value
''.join(answer) # Transform list to string