목표
- 베스트 엘범 문제 풀이
- 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42586
문제 요구사항
- 각 기능은 진도가 100%일때 서비스 배포됨.
- 각 기능 개발 속도가 다르며, 뒤에있는 기능은 먼저 배포 될수 없음
- 각 기능 배포시 몇 개의 기능이 배포되는지 반환
문제 풀이
배열을 이용한 풀이
-
데이터 추상화
progresses
,speeds
값이 다른 두개의 데이터로 내려온다.progresses
진행 정도,speeds
는 진행 속도로, 진행 정도에 진행 속도를 하나씩 더해주면,하나의 데이터
로 작업할 수 있다.while(progresses.length > 0){ // 진행 정도 - speeds값만큼 더함. progresses = progresses.map( (ele,idx) => { return ele + speeds[idx]; }) console.log(progresses); // ...생략 ... } => 실행 결과 [ 94, 60, 60 ] [ 95, 90, 65 ] [ 96, 120, 70 ] [ 97, 150, 75 ] ... 생략 ...
-
문제 해결
- 진행 정도는 매일
speads
값만큼 커진다. - 최우선 진행 정도가 100보다 크면 값을
cnt
을 증가,speads
값과progresses
을 제거 한다. - 2.번 작업을 다시한다. 값이 없다면 cnt 값을 넣고
- 1.번 으로 다시 돌아간다.
while( progresses.length > 0 ){ if( progresses[0] >= 100 ){ progresses.shift(); speeds.shift(); ++cnt; }else { break; } } if(cnt > 0) answer.push(cnt);
- 진행 정도는 매일
결론
- 언제 조건이 만족되는지 정확한 시점을 알아야 한다. 기저 사례라고도 하는데. 반복문이 무한정돌지 않도록 특정 시점을 먼저 잡는게 중요
다른 사람의 기가막힌 풀이..