https://programmers.co.kr/learn/courses/30/lessons/42584
문제 설명
- 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
제한사항
- prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
- prices의 길이는 2 이상 100,000 이하입니다.
입출력 예
prices | return |
[1, 2, 3, 2, 3] | [4, 3, 1, 1, 0] |
풀이 방법
스택으로 분류된 문제지만 반복문으로 풀었다.
1. 이중 반복문을 통해 prices의 값을 하나씩 비교
2. answer값을 증가시키고 만약 j번째 prices의 값 i번째 prices의 값보다 작다면 반복문을 빠져나온다.
내 코드
class Solution {
public int[] solution(int[] prices) {
int[] answer = new int[prices.length];
for(int i=0;i<prices.length;i++){
for(int j=i+1;j<prices.length;j++){
answer[i]++;
if (prices[i] > prices[j]) break;
}
}
return answer;
}
}
다른 풀이
import java.util.*;
public class Solution {
public int[] solution(int[] prices) {
int[] answer = 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()]) {
answer[stack.peek()] = i - stack.peek();
stack.pop();
}
stack.push(i);
}
while (!stack.isEmpty()) {
answer[stack.peek()] = prices.length - stack.peek() - 1;
stack.pop();
}
return answer;
}
}
'알고리즘 > 문제 풀이' 카테고리의 다른 글
[Java 자바] 프로그래머스 > Lv.2 카펫 (0) | 2022.03.10 |
---|---|
[Java 자바] 프로그래머스 > Lv.2 H-Index (0) | 2022.03.10 |
[Java 자바] 프로그래머스 > Lv.2 프린터 (0) | 2022.03.09 |
[Java 자바] 프로그래머스 > Lv.2 위장 (0) | 2022.03.09 |
[Java 자바] 프로그래머스 > Lv.2 전화번호 목록 (0) | 2022.03.06 |
댓글