[프로그래머스] 주식 가격 (Java, lv2)알고리즘/자료구조2024. 7. 17. 21:05
Table of Contents
반응형
문제 출처
https://school.programmers.co.kr/learn/courses/30/lessons/42584
문제 풀이
초 단위로 기록된 주식 가격이 담긴 배열 prices가 주어질때 가격이 떨어지지 않는 기간은 몇초인지 return
- 제한 사항 int[] prices의 길이는 2 이상 100,000 이하
- O(n^2)으로 풀이시 O(10^10) 발생 가능
- 스택을 사용하여 O(N) 풀이, 인덱스 번호를 스택에 넣는다는 아이디어를 생각하지 못했다.
prices : [1, 2, 3, 2, 3]
return : [4, 3, 1, 1, 0]
prices[i] < prices[stack.peek()] 인 경우 감소가 발생했으므로
peek idx 값을 꺼내어 answer[idx] = i(현재 위치) - idx 로 갱신해준다
prices 최대 길이까지 순차 순회 완료하고, stack이 비어있지 않은 경우
하나씩 꺼내서 answer[idx] = 전체 길이 - idx 로 정답을 갱신해준다
제출 코드
import java.util.*;
class Solution {
public int[] solution(int[] prices) {
int[] answer = new int[prices.length];
Deque<Integer> stack = new ArrayDeque<>();
for(int i = 0; i < prices.length; i++) {
while(!stack.isEmpty() && prices[i] < prices[stack.peek()]) {
int idx = stack.pop();
answer[idx] = i - idx;
}
stack.push(i);
}
while(!stack.isEmpty()) {
int idx = stack.pop();
answer[idx] = prices.length - idx - 1;
}
return answer;
}
}
반응형
'알고리즘 > 자료구조' 카테고리의 다른 글
[프로그래머스] 디스크 컨트롤러 (Java, Heap, lv3) (0) | 2024.07.19 |
---|---|
[프로그래머스] 더 맵게 (Java, Heap, lv2) (0) | 2024.07.19 |
[BOJ21942] 부품 대여장 (자료구조, 해시맵) (0) | 2024.05.14 |
[Java] TreeSet 주요 메소드 살펴보기 (0) | 2024.05.08 |
[Java] PriorityQueue(우선 순위 큐) 분석하고, 따라 구현해보기 (0) | 2024.02.12 |
@leejinwoo1126 :: 천천히 하나씩
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!