티스토리 뷰
문제 설명
주어진 기능 상태 progresses와 각 기능의 개발 속도 speeds가 있다.
각 기능은 100% 완성되었을 때 배포 가능하다.
뒤의 기능이 완성되도, 앞 기능이 배포될 때 함께 배포된다.
각 배포마다 몇 개의 기능이 배포되는가?
자료 구조
문제 설명을 읽어보면 먼저 들어오는 것과 같이 나가야한다.
선입선출 큐를 활용해 문제를 풀이해보겠다.
풀이 과정
1. 남은 작업 일수를 계산한다.
2. 큐에 남은 일수를 저장한다.
3. 큐에서 작업을 하나씩 꺼내며, 앞선 작업의 배포가 끝날 때까지 기다린다.
4. 현재 작업의 남은 일수가 앞선 작업의 남은 일수보다 크면 새로운 배포 그룹을 시작한다.
function solution(progresses, speeds) {
const days = progresses.map((progress, index) => {
return Math.ceil((100 - progress) / speeds[index]);
});
const queue = [];
let maxDay = days[0];
let count = 0;
for (let day of days) {
if (day <= maxDay) {
count++;
} else {
queue.push(count);
count = 1;
maxDay = day;
}
}
queue.push(count);
return queue;
}
큐는 작업 순서를 유지하기 때문에 이러한 문제 유형에서 적합하다.
큐를 사용하면 각 작업을 순서대로 처리하기 때문에 배포 일정을 관리하기 쉬워진다.
'Oops, All Code! > 🤯 Oops, My Algorithm!' 카테고리의 다른 글
꒰ྀི 09. LeetCode:: 유효한 수도쿠 (0) | 2024.07.22 |
---|---|
꒰ྀི 08. 프로그래머스:: 피로도 (0) | 2024.07.18 |
꒰ྀི 06. 프로그래머스:: 올바른 괄호 (0) | 2024.07.17 |
꒰ྀི 05. 프로그래머스:: 큰 수 만들기 (0) | 2024.07.17 |
꒰ྀི 04. 프로그래머스:: 소수 찾기 (0) | 2024.07.16 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- javascript
- 비즈플리마켓
- 책추천
- 어른의어휘공부
- 도서리뷰
- 대학생플리마켓
- 안성스타필드
- 플리마켓운영
- 카드뉴스
- 플리마켓후기
- 카페추천
- 프론트엔드
- js
- typescript
- 서평
- 프로토타입
- 경험플리마켓
- 대학생팝업스토어
- 타입좁히기
- 프리코스
- 우아한테크코스
- react
- 소사벌맛집
- 회고
- 일급객체
- 도서추천
- 소사벌
- 트러블슈팅
- 어휘력
- 코딩테스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함