728x90
문제 설명
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
제한사항
- prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
- prices의 길이는 2 이상 100,000 이하입니다.
입출력 예
prices return
[1, 2, 3, 2, 3] | [4, 3, 1, 1, 0] |
입출력 예 설명
- 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다.
- 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다.
- 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다.
- 4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다.
- 5초 시점의 ₩3은 0초간 가격이 떨어지지 않았습니다.
구현 코드
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> prices) {
vector<int> answer;
int cnt=0;
for(int i=0;i<prices.size();i++){
for(int j=i+1;j<prices.size();j++){
if(prices[i]<=prices[j]){
cnt++;
}
else{
cnt++; //1초뒤에 가격이 떨어지므로 1초간 가격이 떨어지지 않은 것으로 봄
break;
}
}
answer.push_back(cnt);
cnt=0;
}
return answer;
}
처음에 풀 때, else부분을 적지 않았었는데 하나만 통과하고 다른건 모두 실패했다...
몇분 고민하다가 문제에서 가격이 떨어지는 부분은 1초 뒤에 떨어지는 것으로 보고 1초간 가격이 떨어지지 않은 것으로 본다고 나와있었다. 그래서 가격이 떨어지더라도 cnt++을 해주고 break를 해야한다!!!
문제와 입출력 예시를 잘 읽어야겠다!
그리고 스택/큐 카테고리에 있었는데 스택 이용해서 푸는 방법도 나중에 포스팅 하도록 하겠다..
728x90
'📁 코딩테스트 준비 > C++' 카테고리의 다른 글
[프로그래머스/C++] Lv.1 크레인 인형뽑기 게임 (0) | 2021.03.26 |
---|---|
[백준 / BAEKJOON] 2606번 : 바이러스 (0) | 2020.10.05 |
[LeetCode] August 1st. Detect Capital (0) | 2020.08.03 |
[프로그래머스/C++] Lv.1 두 정수 사이의 합 (0) | 2020.05.23 |
[프로그래머스/C++] Lv.1 문자열 내 마음대로 정렬하기 (0) | 2020.05.23 |