프로그래머스 기능개발

최준근·2021년 10월 8일
0

문제 설명

생각하기

  1. 기능을 완성시키는데 걸리는 시간을 각각 찾기
  2. 찾은 시간을 리스트화 시키기
  3. 0번째 배열의 시간을 저장하고 그 시간보다 큰 시간이 나올때 까지 cnt+=1을 진행
  4. 큰 시간이 나왔다면 res리스트에 cnt(한번에 배포할 수 있는 기능의 수)를 append해주고 3번을 반복해줌

내 코드

첫번째 시도

시간초과로 실패.
아무래도 for문안에 while반복문을 사용하여 시간복잡도가 좋지 않다.

두번째 시도

for문이 아니라 while문을 사용
첫번째 작업 + (소요되는 시간 작업스피드)가 100이 되거나 넘을때
첫번째 작업과 첫번째 작업의 스피드를 pop으로 빼준다.
cnt +=1로 한번 배포할때 가능한 기능의 수를 1더해주고
다음 작업으로 넘어간다
만약 작업 + (소요되는 시간
작업 스피드)가 100이 안된다면. 즉, 작업을 완성하는데 현재 시간보다 더 많은 시간이 필요하다면
res에 append(cnt) 그리고 cnt = 0 으로 초기화
이후에 time을 1 더해준다.
마지막 작업이 시간이 가장 오래 걸릴 수 있으므로 while문을 빠져나온뒤 res.append(cnt)를 한번 더 해준다.

profile
느려도 좋으니 꾸준하게

0개의 댓글