Algorithm/Programmers

[Programmers] 주식가격

goakgoak 2020. 5. 29. 12:35

[Level 2] 주식가격

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

 

 

Solution

  • cur은 현재 시점의 가격이고, 현재 시점을 기준으로 이전의 주식가격(prices[i])을 cur과 비교하면서 가격이 떨어지지 않은 기간을 증가하는 방식
  • 정확성 테스트는 통과했지만 효율성 테스트는 통과하지 못했다.

 

 

소스코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution {
    static int[] answer;
    static boolean[] flag;
 
    public int[] solution(int[] prices) {
        init(prices.length);
       for(int p = 1, time = 1; p<prices.length;p++, time++){     
            int cur = prices[p];
            for(int i = 0; i<time; i++){
                if(flag[i]) continue;
                answer[i]++;
                if(prices[i] > cur){
                    flag[i] = true;
                }
            }
       }        
        return answer;
    }
    
    public static void init(int len){
        answer = new int[len];
        flag = new boolean[len];
    }
}
cs

 

 

+) 효율성 테스트 통과한

소스코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
    public int[] solution(int[] prices) {
        int[] answer = new int[prices.length];
        
        for (int i = 0; i < answer.length; i++) {
            for (int j = i+1; j < answer.length; j++) {
                if (prices[i] > prices[j]) {
                    answer[i] = j-i;
                    break;
                }
                if (j==answer.length-1) answer[i] = j-i;
            }
        }
        return answer;
    }
}
cs

 

자료출처 

https://sas-study.tistory.com/256