반응형
원래 3차원 어쩌구 문제가 있었는데 프로그래머스 안에서 검색해보니 나오질 않아서 최신 문제들로 다시 추천해달라고 했다.
그래서 오늘 풀 문제는 '기능개발'이다.
이번 문제는 처음 풀어보는 문제였다. 그래서 과거 코드는 없다.
문제를 읽었을 땐 문제에서 뭔가 강조하는 것 같았던 '작업 일수'는 별로 신경 안 써도 될 거 같았는데..
아니 문제를 풀다보니깐 '작업 일수'가 되게 중요한 거였다..!
역시 문제에 나오는 내용은 허튼 것이 없다.
코드
import java.util.*;
class Solution {
public List<Integer> solution(int[] progresses, int[] speeds) {
List<Integer> answer = new ArrayList<>();
int success = 100;
Deque<Integer> deque = new ArrayDeque<>();
// 작업 종료일 구해서 deque에 넣기
for(int i = 0; i < progresses.length; i++) {
int progress = progresses[i];
int speed = speeds[i];
int endDate = (int)Math.ceil((double)(success - progress) / (double)speed);
deque.offer(endDate);
}
int prevEndDate = deque.poll();
int doneTaskCnt = 1;
while(!deque.isEmpty())
{
if(prevEndDate >= deque.peek()) {
deque.poll();
doneTaskCnt++;
} else {
answer.add(doneTaskCnt);
prevEndDate = deque.poll();
doneTaskCnt = 1;
}
if(deque.isEmpty()) {
answer.add(doneTaskCnt);
}
}
return answer;
}
}
짧게 설명해보자면 작업일수를 먼저 구해서 deque에 넣고 (기준 일수가 됨)
현재 작업일수보다 다음 작업 일수가 같거나 작으면 같이 배포되니까 ++ 해주고 아니면
배포 된 기능 수를 answer 리스트에 넣고 작업일수 기준을 업데이트해줬다.
근무지 점심시간에 풀은거라 보안 상 캡처가 안돼서;;
3점을 맞았는데 캡쳐본이 안올라간다.
오늘도 즐거운 코딩!!!
반응형