문제 링크 : 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;
}
}
성공..!