
number에서 k개의 숫자를 삭제해서 만들 수 있는 최대한 큰수를 만들어야 한다.
number을 앞에서부터 돌면서 i+1번째 인덱스의 숫자가 i번째 인덱스보다 크면 앞에 숫자를 삭제해 주고 k를 1 감소시켰다.
number을 한바퀴 돌아도 k가 남아있다면 number에 있는 숫자중 가장 작은값을 없애는 방식으로 k를 1씩 감소시켰다.
def solution(number, k):
answer = ''
i=1
while(k>0):
if number[i]>number[i-1]:
number=number[:i-1]+number[i:]
k-=1
if i>1: #i-1번째 인덱스를 제거했으므로 i번째 인덱스는 i-1번째 인덱스가 됨
i-=1
else:
i+=1
if len(number)==i:
break
while(k>0): #k가 아직 남아있는 경우
min_val,min_i=10000000,0
number_arr=list(number)
for i in range(0,len(number_arr)):
tmp=int(number_arr[i])
if min_val>tmp:
min_val=tmp
min_i=i
del number_arr[min_i]
number=''.join(number_arr)
k-=1
return number
'algorithm > coding test' 카테고리의 다른 글
| 프로그래머스 - 2xn타일링 (파이썬) (0) | 2024.04.15 |
|---|---|
| 프로그래머스 - 다리를지나는트럭 (파이썬) (0) | 2024.04.15 |
| 프로그래머스 - 택배상자 (파이썬) (0) | 2024.04.14 |
| 프로그래머스 - 숫자변환하기 (파이썬) (0) | 2024.04.14 |
| 프로그래머스 - 호텔 대실 (파이썬) (0) | 2024.04.14 |