큰 수 만들기
- 내 풀이
- 테스트 케이스는 성공 / 제출 하면 all 실패
- 첫번 째 수를 구하고 그 이후의 값들을 다시 비교하는 방식으로 했는데 그럴 필요 없음
def solution(number, k):
length=len(number)-k #결과의 길이
n=[]
same=1
idx=number.index(max(number[:length]))
count=k-idx #추가적으로 제거할 개수
for l in number[idx:]:
if n and count!=0:
if l==n[-1]:
same+=1
else:
if l>n[-1]:
for i in range(same):
del n[-1]
count-=1
same=1
n.append(l)
if count:
n=n[:-count]
answer=''.join(n)
return answer
- 다른 사람 풀이
- 첫번 째 값부터 끝까지 한 번에 비교
- while문을 사용해서 더이상 작은 값이 없을 때까지 pop
def solution(number, k):
list=[number[0]]
for num in number[1:]:
#앞의 값보다 큰 값이 나오면 작은 값이 없어질때까지 반복하면서 제거
while len(list)>0 and list[-1]<num and k>0:
list.pop()
k-=1
list.append(num)
if k:
list=list[:-k]
answer=''.join(list)
return answer
print(solution('1924','2'))
print(solution('1231234','3'))
print(solution('4177252841','4'))
#결과
"94"
"3234"
"775841"