[고득점Kit][스택] 주식 가격 ⭐⭐

Date:     Updated:

카테고리:

태그:

C++로 풀이했습니다.
출처 : 프로그래머스 고득점 Kit 문제 풀이. https://programmers.co.kr/learn/challenges

[스택/큐] 주식 가격

난이도 ⭐⭐

문제

image


내 풀이

스택으로 풀지 않고 그냥 벡터로 간단하게 풀었다. 프로그래머스에 스택으로 푼 다른 사람의 풀이도 있으니

#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 count = 0;
        for(int j = i + 1; j < prices.size(); j++)
        {
            count++;
            if (prices[i] > prices[j])
                break;
        }
        answer.push_back(count);
    }
    
    return answer;
}
  • 예시로 설명
    • prices[0] = 1 초 (i = 0)와 2 초, 3 초, 2 처, 3 초를 각각 비교해서 가격이 떨어졌는지를 알아봐야 한다.
      • 비교할 때마다 무조건 count를 1씩 더한다.
      • 1 <= 2 니까 비교를 계속 이어간다. 1 <= 3 니까 비교를 계속 이어간다. 1 <= 2 니까 비교를 계속 이어간다. 1 <= 3 니까 비교를 계속 이어간다.
        • 총 count = 4
        • answer[0] = 4 가 들어가게 된다.
    • prices[2] = 3 초 (i = 2)와 3 초, 2 초, 3 초를 각각 비교해서 가격이 떨어졌는지를 알아봐야 한다.
      • 3 > 2 니까 가격이 떨어진 것을 알게 되었으므로 3 초에 대해서는 더 이상 비교를 하지 않는다.
      • 그러나 바로 3 > 2 가 되었더라도 2 로 떨어지기까지의 0 ~ 1 초 동안은 가격이 떨어지지 않은 것으로 보기 때문에 count = 1 이 된다.
        • 즉 가격이 떨어지든 아니든 비교할 때마다 count는 계속 1씩 증가시켜 주어야 함
    • 마지막 원소는 조건에 안맞아 두번째 j for문을 돌지 않게 되기 때문에 자연스럽게 count = 0 으로 들어간다.


🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

댓글남기기