프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 파악
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
제한사항
- prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
- prices의 길이는 2 이상 100,000 이하입니다.
입출력 예
prices | return |
---|---|
[1, 2, 3, 2, 3] | [4, 3, 1, 1, 0] |
초 단위로 기록된 주식가격이 담긴 배열 price
, 가격이 떨어지지 않은 기간은 몇 초인지 return
- 1은 5초때까지 떨어진 적이 없음 → 4초
- 2는 오름 2, 유지 1 → 3초
- 3은 떨어짐 1, 유지 1 → 1초
- 2는 오름 1 → 1초
- 3은 다음 시간이 없음 → 0초
접근 방법
자기 자신보다 작아질 때를 카운트 0, 자기 자신보다 크거나 같을 때를 카운트 +1
1초 때는 n-1번, 2초 때는 n-2번을 만족시켜야 함 그리고 n초에는 0번
먼저 들어온 요소를 먼저 처리하는 “큐”를 이용
먼저 꺼내서 나머지랑 비교하고 종료.
그 다음 요소를 꺼내서 비교하고 종료 반복
❗️주의할 점
떨어진 순간 볼 필요가 없기 때문에 바로 종료한다.
크거나 같은 기간을 카운트 하지만 얼마나 유지했는가를 보는 문제임.
코드 구현
import java.util.*;
class Solution {
public int[] solution(int[] prices) {
int[] answer = new int[prices.length];
Queue<Integer> queue = new LinkedList<>();
// 큐를 생성함.
for (int price : prices) {
queue.offer(price);
}
for (int i = 0; i < prices.length; i++){
// 현재의 정보를 저장
int current = queue.poll();
// 기간을 카운트할 변수 지정
int cnt = 0;
for(int num : queue){
cnt++;
// 현재 가격보다 떨어지는 순간 종료
if (current > num) break;
}
answer[i] = cnt;
}
return answer;
}
}
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] LV2. 기능 개발 (스택/큐) (0) | 2025.05.12 |
---|---|
[프로그래머스] Lv2. 문자열 압축 (1) | 2025.05.07 |
[프로그래머스] LV3. 가장 먼 노드 (그래프) (0) | 2025.04.26 |
[프로그래머스] Lv1.같은 숫자는 싫어 (스택/큐) (0) | 2025.04.23 |