코딩테스트/프로그래머스

[프로그래머스] [Level 2] 큰 수 만들기

박소민 2022. 5. 11. 21:44
큰 수 만들기

 

 

  • 내 풀이
    • 테스트 케이스는 성공 / 제출 하면 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"