Programmers/프로그래머스-기능개발-python
📖 문제
🎈 풀이
- 먼저 온 것을 먼저 빼야된다고 생각해서 큐를 사용하게 되었다.
- 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로 만들어 출력해주었다.
✨ 실행 결과
💡 문제 출처
프로그래머스