반응형
[문제 링크]
https://programmers.co.kr/learn/courses/30/lessons/42584
[제약조건 및 풀이]
prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
prices의 길이는 2 이상 100,000 이하입니다.
prices [1, 2, 3, 2, 3]
return [4, 3, 1, 1, 0]
1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다.
2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다.
3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다.
4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다.
5초 시점의 ₩3은 0초간 가격이 떨어지지 않았습니다.
큐에 주식 가격 정보를 넣고, 큐에서 가격 정보를 꺼낸 뒤에(poll), 남아있는 큐를 기반으로 가격이 떨어질 때까지의 초를 계산했다.
import java.util.Queue;
import java.util.List;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.stream.IntStream;
class Solution {
public int[] solution(int[] prices) {
List<Integer> answer = new ArrayList<>();
Queue<Integer> queue = new LinkedList<>();
// save all price in queue
for (int price : prices) {
queue.offer(price);
}
// count
int seconds = 0;
while (!queue.isEmpty()) {
if (queue.size() == 1) {
answer.add(0);
break;
}
int currentPrice = queue.poll();
for (int value : queue) {
seconds++;
if (currentPrice > value) {
break;
}
}
answer.add(seconds);
seconds = 0;
}
return answer.stream().flatMapToInt(IntStream::of).toArray();
}
}
반응형
'Programming > Algorithm' 카테고리의 다른 글
[Programmer Weekly Challenge #1] 부족한 금액 계산하기 (2) | 2021.08.09 |
---|---|
[Queue문제] - ZigZagOrder (0) | 2021.06.06 |
[프로그래머스] - [큐스택] 프린터 문제 (0) | 2021.05.25 |
[프로그래머스] - [큐스택] 기능개발 문제 (0) | 2021.05.23 |
[30 Days of Code] 0: Hello, World (0) | 2020.10.30 |