Step 4-3: 풀어서 내걸로 만들자! "큰 수 만들기"

data_hamster·2023년 4월 16일
0

학습 주제
실제 코드 구현

학습 내용

아이디어

  • 큰 수는 되도록 앞의 자릿수가 큰 수일 수록 생성 가능
  • 맨 앞자리부터 큰 수를 선택하고 작은 수는 k 갯수만큼 제거함
    • 41이 저장, 7이 들어올 경우, 1 제거, 4 제거, 7 삽입 순으로 진행.
  • 9876처럼 미리 정렬된 경우, k는 소모되지 않음. 이때 뒤에서 k개 만큼 제거함

알고리즘

  • 글자를 수집할 collected[] 생성
  • collected > 0, 지금 들어온 숫자 > collected[-1], k > 0 조건 모두 만족 시,
    • collected.pop()
    • k -= 1
    • while 내 반복
  • if k == 0 이면 collected += number[i:]
  • collected.append(num)

내 풀이

def solution(number, k):
    anwer = ''
    collected = []

    for i, num in enumerate(number):
        while len(collected) > 0 and collected[-1] < num and k > 0:
            collected.pop()
            k -= 1

        if k == 0:
            collected += number[i:]
            break

        collected.append(num)

    collected = collected[:-k] if k > 0 else collected
    answer = ''.join(collected)
    return answer

어려운 점

if문 1줄로 쓰는게 익숙하지 않음. 아디이어를 알고리즘으로 구현하는 연습을 많이 해보면 좋겠음.

profile
반갑습니다 햄스터 좋아합니다

0개의 댓글