728x90
반응형
⭐️ 코드
public int[] solution(int[] prices) {
int[] answer = new int[prices.length];
for(int i = 0; i < prices.length; i++) {
if(i < prices.length-1) {
answer[i] = notDecreased(i, prices);
}
if(i == prices.length-1) {
answer[prices.length-1] = 0;
}
}
return answer;
}
private int notDecreased(int idx, int[] prices) {
ArrayDeque<Integer> stack = new ArrayDeque<Integer>();
stack.addFirst(prices[idx]);
for(int i = idx+1; i < prices.length; i++) {
if (stack.peekFirst() > prices[i]) {
stack.addLast(prices[i]);
break;
} else {
stack.addLast(prices[i]);
}
}
return stack.size()-1;
}
💡 문제 풀이
주식가격 문제는 문제 지문 자체를 이해하는데 시간이 걸린다.
처음에는 뭔 소린지 모르겠었었고 지금도 왜 이렇게 문제가 출제됐는지는 잘 모르겠다..
아래 링크 들어가서 문제 설명을 읽고 풀도록 하자. 이 문제는 설명을 먼저 보는 게 젤 풀기 쉬운 것 같다.
https://school.programmers.co.kr/questions/39058
주식 가격이 떨어지면 그다음부터는 올라가든 말든 신경 쓰지 않기 때문에 주식 가격이 떨어지는 순간까지의 num을 구해서 Array로 return 해주면 된다.
private int notDecreased(int idx, int[] prices) {
ArrayDeque<Integer> stack = new ArrayDeque<Integer>();
stack.addFirst(prices[idx]);
for(int i = idx+1; i < prices.length; i++) {
if (stack.peekFirst() > prices[i]) {
stack.addLast(prices[i]);
break;
} else {
stack.addLast(prices[i]);
}
}
return stack.size()-1;
}
나는 Stack으로 풀었으며, 내려가는 순간까지의 prices를 Stack에 집어넣고 Stack.size()의 크기에서 -1을 해준 값이 정답이었다.
현재 풀이는 시간을 많이 투자 안 하고 풀어서 풀이 과정이 조금 복잡하고 그래서 시간이 좀 걸린다.
크게 설명할 만한 사항은 없는 것 같으니 끝!
👀 후기
어렵진 않다. 하지만 문제 자체의 이해를 잘 못하겠었었다.
이건 내 잘못이 아니라 문제 잘못인 것 같다 ㅎㅎ
728x90
반응형
'CodingTest > Programmers' 카테고리의 다른 글
[프로그래머스/Programmers] 두 큐 합 같게 만들기 (Java - Queue - Lv2) (0) | 2023.01.24 |
---|---|
[프로그래머스/Programmers] 최댓값과 최솟값 (Java - Lv2) (0) | 2023.01.21 |
[프로그래머스/Programmers] 괄호 회전하기 (Java - Stack - Lv2) (0) | 2023.01.18 |
[프로그래머스/Programmers] 올바른 괄호 (Java - Stack - Level2) (0) | 2023.01.17 |
[프로그래머스/Programmers] 기능개발 (Java - Level2) (0) | 2023.01.16 |