Development Logs/Algorithms

[JAVA] 프로그래머스 : 주식가격 (코딩테스트 고득점 kit > 스택/큐)

유뱅유뱅뱅 2020. 7. 14. 16:20

https://programmers.co.kr/learn/courses/30/lessons/42584

 

코딩테스트 연습 - 주식가격

초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00

programmers.co.kr

첫 번째 풀이

큐를 이용하여 구현하였음

각 주식 가격이 언제까지 떨어지지 않는지 시간을 재는 방식을 이용함

코드

import java.util.*;
// 주식가격

class Solution {
    public int[] solution(int[] prices) {
        int[] answer = new int[prices.length];
        
        Queue<Integer> q = new LinkedList<>();
        // 주식 가격 queue에 넣기
        for(int i=0; i<prices.length; i++){
            q.offer(prices[i]);
        }
        
        //peek()에서 prices들과 가격 비교 time ++
        int idx = 0;
        int time = 0;
        while(!q.isEmpty()){
            time = 0;
            for(int i=idx+1; i<prices.length; i++){
                if(q.peek() <= prices[i]){
                    time++;
                }
                else{
                	time++;
                    break;
                }
            }
            q.poll();
            answer[idx] = time;
            idx ++;
        }
        
        return answer;
    }
}

 

두 번째 풀이

큐를 이용하지 않고 구현해봄

코드

import java.util.*;

// 주식가격
class Solution {
    public int[] solution(int[] prices) {
        int[] answer = new int[prices.length];
        
        int time;
        
        for(int i=0; i<prices.length; i++){
            
            time=0;
            for(int j=i+1; j<prices.length; j++){
                if(prices[i] <= prices[j]){
                    time++;
                }
                else{
                    time++;
                    break;
                }
            }
            answer[i] = time;
        }
        
        return answer;
    }
}