새소식

알고리즘 문제풀이/프로그래머스

[프로그래머스(Programmers)] level2 기능개발 스택/큐 문제 자바 풀이

  • -

안녕하세요 이번에는 프로그래머스 level2 기능개발 문제 풀이입니다

이 문제는 스택/큐 문제로 분류가 되어있는데요

저는 스택이나 큐를 사용하지 않고 그냥 arrayList를 이용하여 풀었습니다

 

이 문제의 핵심 내용은 뒤의 기능이 더 빨리 끝나더라도 앞의 기능이 배포되어야

그때서야 배포될 수 있다는 것입니다

예를들어 기능별 걸리는 일 수가 7,3,5,9라면

2,3번째 기능은 첫번째 기능이 구현된 7일째에 한 번에 배포되고 4번째 기능이 9일째에 배포되서

답은 '3,1'이 됩니다. 즉 수를 비교하며 뒤의 숫자가 더 작다면 큰 수가 나올때까지 count해주면 됩니다

 

자세한 풀이 내용과 코드는 깃허브 에서도 볼 수 있습니다!!

https://github.com/wlgh325/Programmers_algorithm/tree/master/Level2/%EA%B8%B0%EB%8A%A5%EA%B0%9C%EB%B0%9C

 

wlgh325/Programmers_algorithm

프로그래머스 알고리즘 자바 풀이. Contribute to wlgh325/Programmers_algorithm development by creating an account on GitHub.

github.com

 

 

프로그래머스 기능 개발 자바 코드는 아래를 참고하셔도 됩니다

import java.util.ArrayList;

class Main{    
    public int[] solution(int[] progresses, int[] speeds) {
        ArrayList<Integer> answerList = new ArrayList<>();
        ArrayList<Integer> arrList = new ArrayList<>();

        // 기능마다 걸리는 일 수 계산
        for (int i = 0; i < progresses.length; i++) {
            int cnt = 0;
            while(true){
                progresses[i] += speeds[i];
                cnt++;
                
                if(progresses[i] >= 100){
                    arrList.add(cnt);
                    break;
                }    
            }
        }

        int cnt = 1;
        int j=0;
        while(true){
            if(arrList.get(j) >= arrList.get(j+1)){
                arrList.remove(j+1);
                cnt++;
            }
            else{
                j++;
                answerList.add(cnt);
                cnt = 1;
            }

            if(arrList.size() -1 == answerList.size()){
                answerList.add(cnt);
                break;
            }
        }

        
        // int형 배열로 변환
        int[] answer = new int[answerList.size()];
        for (int i = 0; i < answerList.size(); i++) {
            answer[i] = answerList.get(i);
        }
        return answer;
    }
}
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.