코테 문제 풀기

[프로그래머스] 기능 개발 (with. 파이썬 python)

silver님 2024. 7. 10. 14:24

 

접근 방법 

queue FIFO를 활용해 풀면 될 것 같다. 

 

코드 

def solution(progresses, speeds):
    answer = []
    days = 0 
    cnt = 0
    
    while len(progresses) > 0:
        if (progresses[0] + days*speeds[0]) >= 100:
            progresses.pop(0)
            speeds.pop(0)
            cnt += 1
        else : 
            if cnt > 0:
                answer.append(cnt)
                cnt = 0
            days += 1 
    answer.append(cnt)
    return answer

 

 

풀이

progresses = [93, 30, 55] 

speeds = [1, 30, 5] 라고 했을 때 

 

1 ) cnt, days 변수를 설정해둔다. 

 

2) 100이 될 때까지 loop를 돌며 days += 1해준다. 

 

3) 만약 days = 7이 되면 첫번째 값 (93)이 100이 되어 if 구문에 따라 progresses와 speeds가 pop이 되고 , cnt += 1이 된다.

progresses = [30, 55]  / speeds = [30, 5]  

 

4) 현재 days가 7이기 때문에 두번째 값(30)도 if 구문에 따라 progresses와 speeds가 pop이 되고 , cnt += 1이 된다. 

 

5) 세번째 값은 100이 안되기 때문에 loop를 돌며 days 값을 늘리고 else에 왔을 때

이전에 완성된 친구들의 cnt값을 출시해준다. 

answer.append(cnt)

 

answer = [2 , ]  

즉, answer 리스트에 append해주고 count값은 초기화 

그 후에 loop를 돌며 days를 늘린다. 

 

6) 세번째 값(55)이 100을 넘으면 cnt += 1 해주고, 이 cnt를 answer.append(cnt)에 따라 answer 리스트에 넣어줌으로써 마지막까지 출시 완료 ! 

 

 

728x90
반응형