본문 바로가기

프로그래머스 - JAVA

코딩테스트 연습 > 스택/큐 > 주식가격

이전 코드

import java.util.*;

class Solution {
    public int[] solution(int[] prices) {
        int[] ans = new int[prices.length];
        
        Queue<int []> priceListQueue = new LinkedList<>();

        ArrayList<Integer> ansArrayList = new ArrayList<>();
            
        for(int i = 0 ; i < prices.length ; i ++){
            priceListQueue.add(prices);
        }
        
        for (int i = 0 ; i < prices.length ; i++ ){
            int [] priceArray = priceListQueue.poll();
            int price = priceArray[i];
            int period = 0;
            
            for (int j = i + 1 ; j < prices.length ; j++){
                if(price <= priceArray[j]){
                    period ++;
                } else{
                    period ++;
                    break;
                }
            }
            
            ansArrayList.add(period);
        }
        
        for (int i = 0 ; i < ansArrayList.size(); i++){
            ans[i] = ansArrayList.get(i).intValue();
        }
        
        return ans;
            
    }
}

최근 코드

import java.util.*;

class Solution {
    public int[] solution(int[] prices) {
        int[] answer = new int [prices.length];
        Queue <int []> qu = new LinkedList<>();
        for (int i = 0 ; i < prices.length ; i++){
            qu.add(prices);
        }
        
        for (int i = 0 ; i < prices.length; i++){
            int [] priceArray = qu.poll();
            int price = prices[i];
            for (int j = i + 1 ; j < priceArray.length ; j++){
                if (price <= priceArray[j]){
                    answer[i]++;
                } else {
                    answer[i]++;
                    break;
                }
            }
        }
        
        return answer;
    }
}