알고리즘/프로그래머스문제풀이

[python][프로그래머스]기능개발_[스택/큐]

개발자 덕구🐾 2022. 6. 9. 21:32
728x90

 

 

 

 

프로그래머스의 고득점 kit 의 스택/큐의 첫번째 문제이다. 

 

 

<기능개발 >

 

문제 : 

 

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다.

또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다.

먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요.

 

 

 

 

 

 

 


 

 

 

 

 

 

문제를 이해하는 것도 꽤 시간이 걸렸다. 

 

처음에는 정직하게 (바보같이)

progress에서 speeds를 나눈 몫으로 배열을 만들었다.

그런데 여기서 return값으로 가려면 추가적인 코드를 넣어야하는데 도통 큐와 연관지어서 생각이 안났다.

 

그리고 코드가 너무 처음배우는 사람 코드 같았다. 

 

 

그래서 구글링해서 코드를 찾아 이해하였다.  

 

 

 

def solution(progresses, speeds):
    answer = []
    time = 0
    count = 0 
    
    while progresses:
        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

 

 

while 문이 끝나고 cnt에 있는 값을 answer에 붙여주는 거 잊지말기!

 

 

 


 

 

배운점 : 

 

1. python의 큐 

 

python의 리스트에서 pop을 그냥하면 가장 오른쪽 원소가 사라진다.

그리고 pop(0)을 하면 가장 왼쪽 (즉, 괄호안에 있는 인덱스)의 원소가 사라진다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

참고 블로그 : 

 

https://huidea.tistory.com/15

 

[프로그래머스][stack/queue] 기능개발 python (200720)

1. 문제 설명 문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에

huidea.tistory.com

 

 

복습 : 

 

20220620

20220622

20220626

✅ 20220630

✅ 20220701

 

반응형