본문 바로가기
정리/알고리즘

스택/큐 - 기능개발

by Hudini30 2022. 2. 3.

프로그래머스 (스택/큐) 기능개발

이 문제는 금방 풀긴 했는데, 테스트 케이스에서 정상적으로 통과 못한 문제가 있었다. 원인은 완료날짜 구할때 소수 날짜인 경우 올림해서 날짜를 구해야 하는데 그렇게 하지 않아 통과를 못한케이스로 보인다.

days = (100 - progresses) / speeds 로 작업 진도가 100이 넘을 날짜를 먼저 구한후 순차적으로 넘으면 결과스택에서 답을 꺼내 다시 push 하고 아닌경우 다음 완료 날짜 구해서 push 하는 방식으로 구현했다.

결과를 array로 다시 내보내야 해서 pop으로 데이터를 꺼내면 array에 집어 넣었다.

import java.util.Stack;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        double completeDays = 0;
        Stack<Integer> resultStack = new Stack<>();

        for (int completeSize = 0; completeSize < progresses.length; completeSize++) {
            if (progresses[completeSize] + speeds[completeSize] * completeDays < 100) {
                completeDays = Math.ceil((double)(100 - progresses[completeSize]) / (double)speeds[completeSize]);
                resultStack.push(1);
            } else {
                int count = resultStack.pop();
                resultStack.push(count + 1);
            }
        }

        int[] answer = new int[resultStack.size()];

        for (int i = resultStack.size() - 1; i >= 0; i--) {
            answer[i] = resultStack.pop();
        }

        return answer;
    }
}

네이버블로그

'정리 > 알고리즘' 카테고리의 다른 글

해시 - 베스트앨범  (0) 2022.02.04
스택/큐 - 프린터  (0) 2022.02.03
해시 - 위장  (0) 2022.02.03
해시 -전화번호목록  (0) 2022.02.03
해시-완주하지못한선수  (0) 2022.02.03

댓글