본문 바로가기
알고리즘

프로그래머스,java]Level2 기능개발

by 완기 2022. 2. 19.
728x90
반응형

 

 

순서가 바뀌면 안 되는 작업 진척률 progresses와 speeds를 반복문을 돌며 앞 인덱스가 다 되어야 배포를 하는 방식이다.

반복문을 돌면서 진척률이 100이 되었다면 100 인애들 다 앞에서부터 배포하고 

100이 안됐다면 speeds만큼 더하면 된다.

 


👨🏻‍💻나의 풀이

import java.util.*;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        
        ArrayList<Integer> list = new ArrayList<>();
        int index = 0;

        while (true) {
            int count = 0;
            if (progresses[index] >= 100) {
                for (int i = index; i < progresses.length; i++) {
                    if (progresses[i] >= 100) {
                        count++;
                        index++;
                    } else {
                        break;
                    }
                }
                if (count != 0) list.add(count);
            } else {
                for (int i = index; i < progresses.length; i++) {
                    progresses[i] += speeds[i];
                }
            }
            if (index == progresses.length && progresses[progresses.length - 1] >= 100) {
                break;
            }
        }
        
        return list.stream().mapToInt(i->i).toArray();
    }
}

정말 말 그대로 푼 것 같다.

 

어디까지 배포됐는지 확인을 위한 index와 배포 갯수를 체크할 count가 있다.

첫 번째 배열이 100이 넘었다면 배포가 가능하고, 배열을 돌며 100이 넘는 요소를 검사해 배포될 개수를 증가한다.

 

배포가 됐으니 index도 증가해야한다.

 

만약 100이 안 넘는다면 배포 안된 인덱스부터 전체 프로그래스를 speed를 누적한다.

 

배포 개수를 예측할 수 없기에 ArrayList에 배포 갯수를 담아 int array로 리턴을 했다.

 

레벨 2도 어렵다.. 공부열심히 해야겠다

728x90
728x90

댓글