본문 바로가기

알고리즘 풀이/프로그래머스

스택/큐 - 주식가격

https://www.welcomekakao.com/learn/courses/30/lessons/42584

 

사실 문제이해가 제일 오래걸렸다... 1초, 2초 시점은 이해가 되지만 3초 시점이 왜 1이지..?

국어능력도 필요한 문제인 것 같다. 어쨌든 위 문제의 풀이방법은 아래와 같다.

 

1. 2중 for 문 중 첫번째 for 문은 처음부터 끝까지 주식의 가격을 순회한다.

2. 두번째 for 문에서 다음 날 가격 끝까지 주식의 가격을 순회한다.

3. 두번째 for 문에서 가격하락이 발생한 날을 찾는다. 만약 가격이 하락했다면 두 주식의 index 차이를 계산하여 정답에 push 하고, 가격하락이 되었다는 flag 를 true 로 설정해준다.

4. 3번 case 에 해당되지 않는다면(주식이 하락하지 않았다면), 마지막 날까지 변동이 없는 것이므로 입력으로 주어진 prices 의 크기( prices.size() )에서 현재 비교대상이 되었던 주식의 index( i ) 의 차이를 구한다. 추가적으로 -1 을 해주는 이유는 배열의 특성 상 index 는 0부터 시작하기 때문이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <string>
#include <vector>
 
using namespace std;
 
vector<int> solution(vector<int> prices) {
    vector<int> answer;
    
    for (int i = 0; i < prices.size(); ++i) {
        bool decrease = false;
        for (int j = i + 1; j < prices.size(); ++j) {
            if (prices[j] < prices[i]) {
                answer.push_back(j - i);
                decrease = true;
                break;
            }
        }
        if (!decrease) answer.push_back(prices.size() - i - 1);
    }
    return answer;
}
cs

 

'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글

이분탐색 > 징검다리  (0) 2019.07.19
이분탐색 > 입국심사  (0) 2019.07.19
스택/큐 - 기능개발  (0) 2019.07.04
스택/큐 - 탑  (0) 2019.07.04
스택/큐 - 다리를 지나는 트럭  (0) 2019.07.02