문제
https://school.programmers.co.kr/learn/courses/30/lessons/42584
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
입출력
prices [ 1, 2, 3, 2, 3]
return [4, 3, 1, 1, 0]
아이디어
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
코드
import java.util.*;
class Solution {
static int N;
public int[] solution(int[] prices) { // 주식가격이 담긴 배열
N = prices.length;
int[] answer = new int[N];
Stack<Integer> stack = new Stack<>();
for(int i = 0; i < N; i++) {
while(!stack.isEmpty() && prices[i] < prices[stack.peek()]){
int prev = stack.pop();
answer[prev] = i - prev; // (i - prev)개수
}
stack.add(i); // 인덱스 저장
}
while (!stack.isEmpty()) {
int prev = stack.pop();
answer[prev] = N - prev - 1;
}
return answer;
}
}
'Java > Java-1차캐시' 카테고리의 다른 글
[백준] 2293 : 동전1, 2625 : 동전 바꿔주기 (0) | 2025.04.18 |
---|---|
[프로그래머스] 숫자 변환하기 (0) | 2025.04.12 |
[백준] 2294 : 동전2 (0) | 2025.03.11 |
[백준] 11054 : 가장 긴 바이토닉 수열 (0) | 2025.03.08 |
[백준] 1043 : 거짓말 (0) | 2025.03.06 |