프로그래머스

프로그래머스(주식가격) 풀이 C++

Shin_jisoo 2020. 11. 2. 02:05
728x90

programmers.co.kr/

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

programmers.co.kr/learn/courses/30/lessons/42584

 

코딩테스트 연습 - 주식가격

초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00

programmers.co.kr

1) 주석 없는 version

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> prices) {
    vector<int> answer;
    
    int cnt;
    for(int i=0;i<prices.size()-1;i++)
    {
        for(int j=1+i;j<prices.size();j++)
        {
            if(prices[i]>prices[j])
            {
                cnt=j;
                break;
            }
            
            if(j==prices.size()-1)
                cnt=j;
        }
        
        answer.push_back(cnt-i);
    }
    
    answer.push_back(0);
    
    return answer;
}

2) 주석 있는 version

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> prices) {
    vector<int> answer;
    
    for(int i=0;i<prices.size()-1;i++) // i가 prices.size()-1 까지 1씩 증가
    {
        int cnt; // 변수 cnt 선언
        for(int j=i+1;j<prices.size();j++) // j가 prices.size() 까지 1씩 증가
        {
            if(prices[i]>prices[j]) // 해당 숫자보다 뒷쪽의 숫자가 작은 경우
            {
                cnt=j; // cnt에 j 저장
                break; // 반복문 멈추기
            }
            
            if(j==prices.size()-1) // 만약 해당 숫자보다 뒷쪽에 작은 숫자가 없다면
            {
                cnt=j; // cnt에 마지막인 j 저장
            }
        }
        
        answer.push_back(cnt-i); // 마지막 인덱스 - 현재 인덱스
    
    }
    
    answer.push_back(0); // 마지막 주식 가격은 떨어질 수 없기 때문에 0 입력
        
    
    return answer;
}