본문 바로가기
코딩테스트/프로그래머스

[프로그래머스] 스택/큐 : 주식가격 Java

by 일상 속 둔치 2020. 9. 7.

가격이 떨어질 때까지의 원소 개수만 세면 된다.

 

반목문 돌리면서 떨어지지 않는 동안 증가시켜주면 되는 간단한 문제이다.

 

이 문제에 스택/큐를 이용해보자면

 

기준이 될 원소를 잡고 원소보다 같거나 큰 원소들을 스택에 쌓는다.

 

기준보다 작아지는 원소를 만나면 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

 

댓글