개발자는 기록이 답이다

[프로그래머스][Java][Lv.2] 기능개발 본문

알고리즘/프로그래머스

[프로그래머스][Java][Lv.2] 기능개발

slow-walker 2023. 10. 3. 20:07

 

https://school.programmers.co.kr/learn/courses/30/lessons/42586

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

내가 푼 풀이 

poll를 while문 들어가기 전에 먼저 하고, 분기처리할때마다 poll했다.

남아있는 cnt를 추가했다.

import java.util.*;

public class Solution {

    public int[] solution(int[] progresses, int[] speeds) {
        Queue<Integer> Q = new LinkedList<>();
        for (int i = 0; i < progresses.length; i++) {
            int remainProcess = 100 - progresses[i];
            int tmp = speeds[i];
            int completeDate = (remainProcess % tmp == 0) ? remainProcess/tmp : (remainProcess/tmp) + 1;
            Q.offer(completeDate);
        }

        int cnt = 1;
        Integer a = Q.poll();
        List<Integer> list = new ArrayList<>();
        while(!Q.isEmpty()) {
            if (a >= Q.peek()) {
                cnt++;
                Q.poll();
            } else {
                list.add(cnt);
                cnt = 1;
                a = Q.poll();
            }
        }
        list.add(cnt);

        int[] answer = new int[list.size()];
        for (int i = 0; i < answer.length; i++) {
            answer[i] = list.get(i);
        }


        return answer;
    }
}
테스트 1 통과 (0.13ms, 75.6MB)
테스트 2 통과 (0.29ms, 78.7MB)
테스트 3 통과 (0.25ms, 74.4MB)
테스트 4 통과 (0.21ms, 74.3MB)
테스트 5 통과 (0.17ms, 75.7MB)
테스트 6 통과 (0.17ms, 67.2MB)
테스트 7 통과 (0.28ms, 71.7MB)
테스트 8 통과 (0.23ms, 71MB)
테스트 9 통과 (0.20ms, 69.3MB)
테스트 10 통과 (0.19ms, 67.8MB)
테스트 11 통과 (0.14ms, 74MB)