코테 문제 풀기
[프로그래머스] 기능 개발 (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
반응형