Programmers/프로그래머스-기능개발-python

Ne5s·2022년 8월 25일
0

알고리즘 문제풀기

목록 보기
19/31
post-thumbnail
post-custom-banner

📖 문제

🎈 풀이

  • 먼저 온 것을 먼저 빼야된다고 생각해서 큐를 사용하게 되었다.
  • progress값을 큐에 다 넣고, 변수를 4개 썼는데..
  • day는 날짜이고, index는 progress 순서에 맞는 speeds값을 찾기 위한 변수
    baepo는 배포되는 기능의 개수, todo는 배포해야하는 현재 작업의 진행도이다.
  • queue에서 빼온 진행도 + (날짜*진행속도) 가 100 이상이 되면 기능의개수+1, 다음 speed를 가르키도록 하고, todo를 0으로 변경하여 큐에서 다음 진행도를 뺴오도록 하였다.
  • 100 미만이고 배포기능의개수가 0개일 때는 날짜만 늘려주고 계속 반복문을 진행하였고,
    기능의 개수가 있을 때는 answer에 추가하고 0으로 변경하고 날짜를 늘려주었다.

💻 코드

💊 탑👍 코드

  • 와우...👍👍👍👍👍
  • Q라는 array를 하나 두고, progresses, speeds를 zip하여 반복문을 돌도록 하였다
  • Q가 비어있으면 [진행하는 데 걸리는 일수, 기능의개수] 형태로 Q에 append하도록 하였다.
    이 때, -((p-100)//s)를 이용해서 math.ceil없이 올림을 구현했다. 초기 기능의개수는 1개이므로 Q.append([-((p-100)//s),1])을 하였음.
  • 그리고 진행하는데 걸리는 일수가 마지막에 Q에 넣은 것보다 크다면 마찬가지로 Q에 추가한다.
  • 적다면 Q에 마지막에 넣은 값에 기능의 개수만 + 1 해준다.
  • return에서 리스트 컴프리헨션을 이용하여 Q에서 기능의 개수만 array로 만들어 출력해주었다.

✨ 실행 결과

💡 문제 출처

프로그래머스

profile
초보개발자
post-custom-banner

0개의 댓글