[고득점Kit][스택] 주식 가격 ⭐⭐
카테고리: Programmers
C++로 풀이했습니다.
출처 : 프로그래머스 고득점 Kit 문제 풀이. https://programmers.co.kr/learn/challenges
[스택/큐] 주식 가격
난이도 ⭐⭐
문제
내 풀이
스택으로 풀지 않고 그냥 벡터로 간단하게 풀었다. 프로그래머스에 스택으로 푼 다른 사람의 풀이도 있으니
#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 으로 들어간다.
- prices[0] = 1 초 (i = 0)와 2 초, 3 초, 2 처, 3 초를 각각 비교해서 가격이 떨어졌는지를 알아봐야 한다.
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글남기기