파이썬으로 부시자! Python with Coreenee

프로그래머스 - 스택/큐 - 기능개발

문제

스크린샷 2020-04-15 오후 1 18 20

입력

스크린샷 2020-04-15 오후 1 15 40


나의 처음 코드

이러한 문제는 사실상 스택과 큐를 사용한다기 보다는, 큐의 작동원리를 알려주는 느낌이다. 100퍼가 되어야 개발되었다고 여기어지고, 또한 제일 앞에 있는 것이 먼저 배포되어야 다음것이 배포 될 수 있는 느낌의 문제이다. (사실상 효율로 따지면 완전 비효율적인 일처리인것이다 ㅋㅋ).
따라서 progresses배열 0번째 인덱스 기준으로 100이 넘는다면 뒤에 있는 것중에 100이넘는 것을 빼준다고 생각하면 된다.

def solution(progresses, speeds):
answer = []
count = 0
while speeds:
    progresses = [progresses[i] + speeds[i] for i in range(len(progresses))]
    if progresses[0] < 100:
        continue
    else:
        for i in progresses:
            if i >= 100:
                count += 1
            else:
                break
    if count != 0:
        for i in range(count):
            del progresses[0]
            del speeds[0]
            
        answer.append(count)
        count = 0
return answer

결과는 맞았습니다. 큐의 작동원리를 알고 있느냐가 중점인 문제다. pop해주는 과정에서, del 과 속도를 비교해봤을 때, del이 미세하게 더 빠른 속도를 보였다. 왜인지는 모르겠지만, 차라리 pop으로 효율을 보려면 배열 순서를 reverse해서 pop()을 해주면 더 빠른 속도를 보일 수 있다. 왜냐하면, pop(0)은 배열 맨 첫번째꺼를 뺴주면서 뒤에 있는 배열원소들이 앞으로 한칸씩 땡겨지기 때문이다. 생각을 해보자,,,1억개가 1억번씩 움직인다고,,, 우엑,,,,