본문 바로가기
Algorithm/문제풀이

[프로그래머스] 주식 가격

by GraceIT 2019. 8. 30.

■ 문제 설명

초 단위로 기록된 주식가격이 담긴 배열 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의 값을 비교하는 아주 단순한 접근 방법이다.

 

  1. 비교 값이 index보다 크거나 같으면 count++ (가격이 떨어지지 않는 경우)
  2. 비교 값이 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

 

코딩테스트 연습 - 주식가격 | 프로그래머스

초 단위로 기록된 주식가격이 담긴 배열 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은 끝까지 가격이 떨어지지

programmers.co.kr

 

'Algorithm > 문제풀이' 카테고리의 다른 글

[백준] 분해합  (0) 2019.09.04
[프로그래머스] 가장 큰 수  (0) 2019.09.04
[백준] 거북이  (0) 2019.08.30
[프로그래머스] H-Index  (0) 2019.08.27
[프로그래머스] 나누어 떨어지는 숫자 배열  (0) 2019.08.27

댓글