https://school.programmers.co.kr/learn/courses/30/lessons/42584
문제
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
풀이1 : 반복문 O(n^2)
간단하다. 배열의 처음부터 끝까지를 i라고 할때 i+1부터 끝까지 올라가느냐 내려가느냐를 살펴본다. 이게...되네...
import java.util.*;
class Solution {
public int[] solution(int[] p) {
int[] answer = new int[p.length];
for(int i=0; i<p.length; i++){
for(int j=i+1; j<p.length; j++){
answer[i]++;
if(p[i]>p[j]) break;
}
}
return answer;
}
}
import java.util.*;
class Solution {
public int[] solution(int[] prices){
int[] ans = 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()]){
ans[stack.peek()] = i-stack.peek();
stack.pop();
}
stack.push(i);
}
while(!stack.isEmpty()){
ans[stack.peek()] = prices.length-stack.peek()-1;
stack.pop();
}
return ans;
}
}
//출처 : https://girawhale.tistory.com/7