문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/42586
코딩테스트 연습 - 기능개발
프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는
programmers.co.kr
문제
설명
길이가 가변적으로 변하는 LinkedList 자료구조를 사용했습니다. 맨 처음에 있는 값이 배포 가능해질 때가지 수를 빼 주다가, 배포가 가능해 지면 linkedlist에서 맨 앞 원소 포함해서 배포 가능한 다른 원소까지 다 제거시키면서 일수를 더해주는 방식으로 구현했습니다!
코드
import java.util.Arrays;
import java.util.LinkedList;
public class PRO_FunctionDev {
public static int[] solution(int[] progresses, int[] speeds) {
LinkedList<Integer> p = new LinkedList<>();
LinkedList<Integer> s = new LinkedList<>();
LinkedList<Integer> result = new LinkedList<>(); //결과값을 담는 리스트
for(int i=0; i<progresses.length; i++) {
p.add(progresses[i]);
s.add(speeds[i]);
} //linkedlist에 옮겨 담음
int cnt=0;
while(!p.isEmpty()) {
if(p.get(0)<100) {
for(int i=0; i<p.size(); i++) {
p.set(i, p.get(i)+s.get(i));
}
}//맨 처음 값이 100 이상이 될때까지 시간에 따라 모든 값에 작업속도 값을 더함
else { //맨 처음값이 배포 가능하다면
while(p.size()!=0 && p.get(0)>=100) {
p.remove(0);
s.remove(0);
cnt++;
}//뒤에 있는 값도 이미 100이 넘었다면, 한꺼번에 배포 가능하므로.
result.add(cnt);
cnt=0; //초기화 필요
}
}
int[] answer = new int[result.size()];
for(int i=0; i<answer.length; i++)
answer[i]=result.get(i);
return answer;
}
}
'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][JAVA] 타겟 넘버 (0) | 2021.09.22 |
---|