가격이 떨어질 때까지의 원소 개수만 세면 된다.
반목문 돌리면서 떨어지지 않는 동안 증가시켜주면 되는 간단한 문제이다.
이 문제에 스택/큐를 이용해보자면
기준이 될 원소를 잡고 원소보다 같거나 큰 원소들을 스택에 쌓는다.
기준보다 작아지는 원소를 만나면 top을 answer에 추가한다.
위의 로직으로 스택을 사용할 수 있을 것이다.
import java.util.*;
class Solution {
public int[] solution(int[] prices) {
int length = prices.length;
int[] answer = new int[length];
int[] stack = new int[length];
int standard = 0;
int top = 0;
for(int i = 0; i < length; i++){
standard = prices[i];
top = 0;
for(int j = i+1; j < length ;j++){
stack[top] = prices[j];
top++;
if(standard > prices[j]){
break;
}
}
answer[i] = top;
}
return answer;
}
}
이건 스택을 사용해조마녀 이렇게 나오긴 하는데 사실 크게 의미는 없는거 같다.
class Solution {
public int[] solution(int[] prices) {
int length = prices.length;
int[] answer = new int[length];
for(int i = 0; i < length; i++){
for(int j = i+1; j < length;j++){
answer[i]++;
if(prices[i] > prices[j]){
break;
}
}
}
return answer;
}
}
이렇게 간단하게 풀 수 있다.
* 사실 스택을 이용한 풀이에서도 사실상 top이 핵심이다. 나머지는 유명무실하다. answer[i] == top
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 스택/큐 : 다리를 지나는 트럭 Kotlin (0) | 2020.09.08 |
---|---|
[프로그래머스] 스택/큐 : 기능개발 Kotlin (0) | 2020.09.07 |
[프로그래머스] 해시 : 베스트앨범 Kotlin (0) | 2020.09.05 |
[프로그래머스] 해시 : 위장 Java (0) | 2020.09.05 |
[프로그래머스] 해시 : 전화번호 목록 Java (0) | 2020.08.30 |
댓글