[Java] Lv.2 프로그래머스 주식가격

rse·2023년 9월 13일
0

알고리즘

목록 보기
35/44

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42584

설명

문제 설명이 매우 부실했던 문제라고 생각한다.

문제 설명을 보고 문제를 풀었음에도 불구하고 테스트케이스 빼고 죄다 틀려서 뭐가 문제인지 보고 또 봤다.

결론은 문제 설명이 상세하지 않아서 문제를 이해하지 못한 상태로 문제를 풀어서 일어난 일이다.

질문하기를 보니 나만 이해를 못한게 아닌 것 같았다...
지문이 리뉴얼 되었다는데 원래는 어땠던건지...

이 문제는 해당 주가의 초로부터 n초 사이에 가격이 떨어지지 않은지 를 보면 되는 문제이다.

1시간 넘게 걸린 문제인데... 밑에 어떤분이 올리신 설명 글을 보고 5분만에 풀었다..

참고 : https://school.programmers.co.kr/questions/20326?question=20326

근데 1시간 넘게 붙잡고 있었던건 너무 비효율 적...

코드

import java.util.*;
class Solution {
        public int[] solution(int[] prices) {
              int[] answer = new int[prices.length];
        Stack<Integer> stack = new Stack<>();

        for (int i = 0; i < prices.length; i++) {
            while (!stack.isEmpty() && prices[i] < prices[stack.peek()]) {
                answer[stack.peek()] = i - stack.peek();
                stack.pop();
            }
            stack.push(i);	// 스택에 인덱스를 저장.
        }

        while (!stack.isEmpty()) {
            answer[stack.peek()] = prices.length -1 - stack.peek();
            stack.pop();
        }

        return answer;
    }
}

성공..!

profile
기록을 합시다

0개의 댓글