본문 바로가기

코테/프로그래머스

주식 가격

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.util.*;
 
class Solution {
    public int[] solution(int[] prices) {
        int[] answer = new int[prices.length];
        Queue<Integer> q = new LinkedList<Integer>();
        
        for(int p : prices ) {
            q.offer(p);
        }
        
        for (int i = 0; i < prices.length; i++) {
            int count = 0;
            int stock = q.poll();
             for (int j=i+1; j < prices.length; j++) {
                if(stock <= prices[j] ) {
                    count++;
                }else{
                    count++;
                    break;
                } 
             }
            answer[i] = count;
        }
 
        return answer;
    }
}
cs

솔직히 반복문만으로도 충분이 풀이가 가능하다.

그냥 큐를 한번 써보고 싶어서 이렇게 해본다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package test;
 
import java.util.*;
 
class Solution {
    public int[] solution(int[] prices) {
        Stack<Integer> beginIndex = new Stack<>();
        int i =0;
        int[] terms = new int[prices.length];
        
        beginIndex.push(i); //인덱스의 스택
        
        for(i = 1; i<prices.length;i++) {
            //스택이 비어있지 않을때 && 다음 인덱스보다 현 인덱스가 더 클때
            while(!beginIndex.empty() && prices[i] < prices[beginIndex.peek()]) {
                //int index = 0 
                int index =beginIndex.pop();
                //terms[0] = 1 - 0
                terms[index] = i-index;
            }
            //beginIndex.push(1);
            //바로 다음의 인덱스를 스택에 삽입
            //그러면 위에서 pop을 해도 남아있는다.
            beginIndex.push(i);
        }
        //스택에는 다음 인덱스가 더 작을 때의 경우만 들어있다.
        while(!beginIndex.empty()){
            int index = beginIndex.pop();
            //작을때의 인덱스 
            terms[index] = i-index-1;
        }
        
        return terms;
    }
}
cs

다른사람이 풀은 풀이

스택을 인덱스로 사용했다.

'코테 > 프로그래머스' 카테고리의 다른 글

[프로그래머스] 신고 결과 받기(JAVA)  (0) 2022.02.18
더 맵게  (0) 2021.01.21
위장  (0) 2021.01.06
다리를 지나가는 트럭  (0) 2021.01.06
프로그래머스 lv2 - 전화번호 목록  (0) 2021.01.04