코딩테스트 연습 - 기능개발 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - 기능개발

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는

programmers.co.kr

 

풀이)

알고리즘)

각 기능들의 진행률에 스피드만큼 값을 올린다.(진행률이 100보다 낮으면 스피드만큼 추가 100보다 커지면 100을 대입)

progress[k]의 진행률이 100이라면 k값과 count를 증가시킨 후 그 다음 기능의 진행률을 체크하며 배포가 가능한 만큼 반복한다. 

반복 중 progress[k]가 100보다 작을 경우 count값을 list에 추가시킨후 count값을 0으로 초기화하고 루프를 종료한다.

k가 기능의 갯수가 될 때까지 반복한다.

코드)

import java.util.ArrayList;
class Solution {
    public ArrayList<Integer> solution(int[] progresses, int[] speeds) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        int[] answer = {};
       
        int k = 0;
        int count = 0;
        while(k < progresses.length) // k는 k이전까지의 기능이 배포되었음을 의미함 
        {
            if(progresses[k] == 100){ // k번째 기능이 배포 가능하다면   
                k++;
                count++;
                while(k <= progresses.length){ // 몇 번째 기능까지 배포가 가능한지 체크
                    if(k == progresses.length) // 마지막 기능의 배포만 남았을 경우
                    {
                             list.add(count);
                             break;
                    }     
                    System.out.println(k);
                    if(progresses[k] != 100) // 다음 기능이 배포가 불가능하다면
                    {
                         list.add(count);
                         count = 0;
                         break;
                    }
                    k++;
                    count++;
                    
                }
            }
            for(int i = 0; i < progresses.length;i++) // 각 스피드만큼 작업 진행
            {
                if(progresses[i] < 100)
                {
                    progresses[i] += speeds[i];
                    if(progresses[i] > 100)
                        progresses[i] = 100;
                }
                System.out.printf("%d ",progresses[i]);
            }
            System.out.println();

        }
        
        return list;
    }
}

'프로그래머스' 카테고리의 다른 글

거리두기 확인  (0) 2021.10.03
뉴스 클러스터링  (0) 2021.09.27
124나라의 숫자  (0) 2021.09.27
행렬 테두리 회전하기  (0) 2021.09.20
메뉴 리뉴얼  (0) 2021.09.20

+ Recent posts