티스토리 뷰

소감

  • for문으로 풀려고 했으나 구현이 쉽지 않았다.
  • 어느 시점에 result에 배포갯수를 추가할지 정하기 어려웠다.
  • stack의 경우는 stack_list.pop(), queue의 경우는 FIFO 성질을 이용, queue_list.pop(0) 을 활용하는 문제가 많다고 한다.
  • 이런 식의 사고과정에 익숙해져야 할 것 같다.

문제 접근하기

  • 스택과 큐를 활용하면 보다 쉽게 풀 수 있다.
  • 주어진 리스트에서 pop(0) 하여 큐의 성질을 활용한다. while문을 돌리며 pop(0) 하면 for문을 대체할 수 있다.
  • 각 기능이 언제 배포되는지, 몇 개의 기능이 배포되는지를 계산하기 위해 변수 time 과 count를 설정한다.
  • 언제 count를 초기화할지 정한다. => 기존의 time 값으로 일처리를 계산했는데 완성하지 못했다 + 그런데 count가 0 아 아닌 상태이다. == 이전 완성된 작업들을 출시해야 한다. => answer 리스트에 append하고 count는 초기화한다.
  • 리스트를 다 돌면 마지막 count를 answer 리스트에 append 한다.
def solution(progresses, speeds):

    answer = []
    time = 0
    count = 0
    
    while len(progresses) > 0:
        if (progresses[0] + time*speeds[0]) >= 100:
            progresses.pop(0)
            speeds.pop(0)
            count += 1
            
        else:
            if count > 0:
                answer.append(count)
                count = 0
            time += 1
    answer.append(count)

    return answer

 

댓글