알맹이방
[프로그래머스] 기능개발 - java 본문
import java.util.ArrayList;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
//int[] answer = {}; 항상 answer에 크기를 지정해줘야 한다. 아직 모르니 나중에 선언해줌
int index=0;
int num=0;
ArrayList<Integer> semi = new ArrayList<>();
while(true){ // 하루 루틴
for(int i =0; i<progresses.length; i++){ //하루마다 진도 더해줌
progresses[i]+=speeds[i];
}
if(progresses[index]>=100){ //100이상인지 확인하는 루틴 A
num++; //연속되는 완료 작업 count
for(int i = index+1 ; i<progresses.length ; i++){ //현재 index 다음으로 100이상이 연속되는지 확인
if(progresses[i]<100){ //100보다 작으면
index=i; //거기서부터 다시 A
break; //완료된 작업이 어디까지 이어졌는지 찾는 루틴 끝
}
else{//그 다음것도 100보다 크다면 count
num++;
}
index++;
}
semi.add(num); //결과를 차례로 semi에 추가
num=0; //다음 완료되는 갯수를 위해 0으로 초기화
}
if(index==(progresses.length-1)&&progresses[index]>=100){ //작업이 완료되었으면 while문 break
break;
}
}
int []answer = new int [semi.size()]; //정답 배열 만들고
for(int j =0; j<semi.size(); j++){ //정답 옮기기
answer[j]=semi.get(j);
}
return answer;
}
}
->다시 원본 리스트를 건들이는 초기 아이디어로 돌아옴.
아래는 아이디어 도출과정
import java.util.Stack;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
int[] answer = {};
int index=0;
while(true){
int num = 0;
Stack<Integer> stack = new Stack<>();
for(int i = progresses.length-1; i>=0;i--){
stack.add(progresses[i]+speeds[i]);
}
while(true){
if(stack.peek()>=100){
stack.pop();
num++;
}
else
break;
}
answer[index]=num;
index++;
if(stack.empty()){
break;
}
}
return answer;
}
}
->시간초과 (아마 while문에서 못 빠져나온듯)
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
int[] answer = {};
int index = 0;
int answerIndex =0 ;
while(index<progresses.length){
int num = 0 ;
for(int i =index; i<progresses.length; i++){ //매일 마다 일단 작업진도 +함
progresses[i]+=speeds[i];
}
if(progresses[index]>=100){
while(index<progresses.length&&progresses[index]>=100){
index++;
num++;
}
if(index==(progresses.length-1)){
answer[answerIndex]=1;
break;
}
answer[answerIndex]=num;
answerIndex++;
}
}
return answer;
}
}
'알고리즘 > [2020] 프로그래머스' 카테고리의 다른 글
[프로그래머스] 스킬트리 - java (0) | 2020.04.29 |
---|---|
[프로그래머스] 124 나라의 숫자 - java (0) | 2020.04.20 |
[프로그래머스] 2018 KAKAO BLIND RECRUITMENT [1차] 캐시 - java (0) | 2020.04.17 |
[프로그래머스] 프린터 - java (0) | 2020.04.15 |
내가 보려고 올리는 정리 (0) | 2020.04.15 |
Comments