본문 바로가기

Computer Science/알고리즘 문제풀이

Programmers > 스택/큐(Stack/Queue) > #43 주식가격

주식가격

 

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

 

 

 

 

1. 문제 설명

 

초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 유지된 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.

 

prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.

 

prices의 길이는 2 이상 100,000 이하입니다.

 

 

 

2. 나의 코드

 

 

- 스택 문제라서 스택 쓰려다가 망한 케이스. 굳이 스택 안써도 되는 데 쓰려다가 개고생했다. 

- ArrayList는 정답을 담는 ArrayList.

- init 를 초기화 시킨다음, 반복문으로 prices 배열을 탐색하면서 init 보다 크거나 같은 수가 나오면 second++한다.

- init 보다 작은 수가 나오면, second +=1 을 한후 break; => 작은 수가 나온 순간 까지 즉 1초 동안 가격을 유지한 것이므로...

- arr.add를 하고 위의 순서를 다시 반복한다.

- answer에 arr을 복사하고 answer를 return한다.

 

import java.util.*;
class Solution {
    public int[] solution(int[] prices) {
        int[] answer = new int[prices.length];
        int init;
        int second;
        ArrayList <Integer> arr = new ArrayList<>();
        for(int i=0;i< prices.length;i++){
            init = prices[i];
            second=0;
            for(int j=i+1;j<prices.length;j++){
                if(init <= prices[j]){
                    second++;
                }
                else{
                    second+=1;
                    break;
                }
            }
            arr.add(second);
        }
        
        int count=0;
        for(Integer n : arr){
            answer[count++] = n.intValue();
        }
        
        return answer;
    }
}