본문 바로가기

코딩 문제/프로그래머스

프로그래머스 - 코딩테스트 - Level2 - 기능개발

728x90

 

풀이

 

class Solution {

      static int[] answer = {};

      static int[] time;

 

      public int[] solution(int[] progresses, int[] speeds) {

 

            int num = 1; // answer 인덱스 개수

            time = new int[progresses.length]; // 각 기능의 완료 시간 배열

 

            // 각 기능 완료시간 구하기

            for(int i=0; i<progresses.length; i++){

                  int count1 = 0;

                  int a = progresses[i];

                  int b = speeds[i];

                  while(a < 100){ // 100%가 되도록 하는 날

                        a += b;

                        count1++;

                  }

                  time[i] = count1; // 각 기능의 완료 시간 배열에 넣기

            }

 

            num = CountIndex(time[0]);

            answer = new int[num]; // answer 배열 초기화

            SaveIndex(time[0], 0, 1);

 

            return answer;

      }

 

      // answer 인덱스 개수 구하기

      private int CountIndex(int first){

            int num = 1;

            for(int i=1; i<time.length; i++){

                  if(time[i] > first){

                        num++;

                        first = time[i];

                  }

            }

            return num;

      }

 

      // answer 배열에 값 넣기

      private void SaveIndex(int first, int index, int num){

            // index : 인덱스 변수

            // num : 같이 배포할 개수

 

            for(int i=1; i<time.length; i++){

                  if(time[i] > first){ // 같이 배포 불가능

                        answer[index] = num;

                        index++;

                        num = 1;

                        first = time[i];

                  }else{ // 같이 배포 가능

                        num++;

                  }

                  if(i==time.length-1){ // 마지막 인덱스일때 answer 배열에 기록

                        answer[index] = num;

                  }

            }

      }

}

 

결과