본문 바로가기

개발/Python

[Python 프로그래머스] 기능개발 - level2 [스택/큐]

 

우선 문제를 읽고 굉장히 간단할 것 같다는 생각을 했다.

스택/큐 자료구조를 사용해서 푸는 문제라는 걸 참고해서 풀어보면 될 것 같다.

 

 

 

 

남은 작업 진도의 값(100-progresses)을  speeds 로 나누고 나머지가 있을 경우 +1

즉, 올림해주면 완성일이 나올 것이다.

 

그리고 뒷 인덱스의 값이 작더라도 앞 인덱스의 값까지 기다려야 하기 때문에   

이때 아마 큐를 사용하는 것 같다. 

 

 

 

------------------------------------------------------------------

import math

 

def solution(progresses, speeds):

       preanswer=[]
       answer=[]
       for pc, sp in zip(progresses, speeds):
              cnt=0

              cnt = int((100-pc)/sp)
              if (100-pc)%sp != 0:
                   cnt=cnt+1

              preanswer.append(cnt)

 

       cnt = 0
       for idx in range(len(preanswer)):

              if preanswer[cnt] < preanswer[idx]:

                    answer.append(idx-cnt)

                    cnt = idx

       answer.append(len(preanswer)-cnt)

 

       return answer

------------------------------------------------------------------

 

 

 

 

 

사실 완료가 빨리 되더라도 앞 인덱스가 완료되지 않았으면 기다려야하는 부분에서

코드 채점을 하면 제대로 통과가 되질 않아서 

생각의 전환이 필요했다. 

 

이중 for 문을 돌려서 풀었었는데 그 방법보다 이 방법이 훨씬 효율적인 것 같다.

 

 

 

 

 

참고 : https://geonlee.tistory.com/122