■ 문제 설명
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
■ 제한사항
- prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
- prices의 길이는 2 이상 100,000 이하입니다.
■ 입출력 예
prices | return |
[1, 2, 3, 2, 3] | [4, 3, 1, 1, 0] |
▶ 코드
기본적인 개념은 index의 값을 증가시키며 그 뒤에 있는 값들과 index의 값을 비교하는 아주 단순한 접근 방법이다.
- 비교 값이 index보다 크거나 같으면 count++ (가격이 떨어지지 않는 경우)
- 비교 값이 index보다 작으면 answer vector에 삽입하고 그 뒤로는 비교하지 않는다(break). (가격이 떨어진 경우)
한가지 고려해줘야할 경우는 answer의 마지막 값은 항상 0이 될 수 밖에 없다.
그 부분을 고려해줘야 한다.
if(index == prices.size()){
answer.push_back(0);
break;
}
전체적인 코드는 아래와 같다.
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> prices) {
vector<int> answer;
int index =0;
int count =0;
while(true){
if(index == prices.size()){
answer.push_back(0);
break;
}
for(int i= index+1 ; i<prices.size() ; i++){
/*1.가격이 떨어지지 않은 경우*/
if(prices[index]<=prices[i])
count++;
/*2.가격이 떨어진 경우*/
else{
answer.push_back(count+1);
break;
}
if(i == prices.size()-1)
answer.push_back(count);
}
count=0;
index++;
}
return answer;
}
※ 출처 : https://programmers.co.kr/learn/courses/30/lessons/42584
'Algorithm > 문제풀이' 카테고리의 다른 글
[백준] 분해합 (0) | 2019.09.04 |
---|---|
[프로그래머스] 가장 큰 수 (0) | 2019.09.04 |
[백준] 거북이 (0) | 2019.08.30 |
[프로그래머스] H-Index (0) | 2019.08.27 |
[프로그래머스] 나누어 떨어지는 숫자 배열 (0) | 2019.08.27 |
댓글