알고리즘 문제풀이

[프로그래머스] 주식가격 (C++)

SiO2whocode 2024. 11. 4. 17:28
728x90

스택/큐 (근데 이제 안쓴..)

 

카테고리는 그랬는데 스택이랑 큐를 쓰지 않고, 이중 for문에 중간에 나오는 것만 잘 해줘도 통과됐다..

스택으로 푼 케이스를 봤는데, 로직이 어려워서 아직 100%이해하진 못하고 나왔음..

 

문제는 N일에 거친 주가가 주어지고, 첫날 부터 차례로 해당 날짜의 주식가격이 떨어지기까지 얼마나 걸리는지 기간을 구하는 문제, 그래서 반환하는 값이 N일의 주가 유지기간을 담은 배열이 된다.

 


접근방법

 

스택으로 푸는 방법이 아니라 단순히 해당 날의 주식가격과 다음 날들의 주식가격을 비교하면서

카운트를 증가시킨다. 이때 다음 날 중 어느 하나가 본인(해당 날의 주식가격)보다 더 떨어질 경우 반복문에서 나온다.

나오면 당시 카운드를 정답 배열에 추가한다.

 

*바로 떨어졌어도 1초?동안은 유지했다고 보기 때문에, 카운트를 증가시킨 후에 값을 비교해서 반복문을 나가야 한다.

 


소스코드

 

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> prices) {
    vector<int> answer;
    
    for(int i = 0 ; i < prices.size() ; i++){
        int inc_cnt = 0;
        for(int j = i+1 ; j < prices.size() ; j++){
            inc_cnt++;
            if(prices[i] > prices[j])
                break;
        }
        answer.push_back(inc_cnt);
    }
    
    
    return answer;
}

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

728x90