• Home
  • About
    • 끄적끄적 photo

      끄적끄적

      하루하루 성장하기

    • Learn More
    • Facebook
    • Instagram
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

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

16 Oct 2018

Reading time ~2 minutes

문제

초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 유지된 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.


제한사항

  • prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
  • prices의 길이는 2 이상 100,000 이하입니다.


입출력 예

prices return
[498, 501, 470, 489] [2, 1, 1, 0]


입출력 예 설명

  • 1초 시점의 ₩498은 2초간 가격을 유지하고, 3초 시점에 ₩470으로 떨어졌습니다.
  • 2초 시점의 ₩501은 1초간 가격을 유지하고, 3초 시점에 ₩470으로 떨어졌습니다.
  • 3초 시점의 ₩470은 최종 시점까지 총 1초간 가격이 떨어지지 않았습니다.
  • 4초 시점의 ₩489은 최종 시점까지 총 0초간 가격이 떨어지지 않았습니다.


풀이

prices의 각 원소별로(i) 해당 인덱스 이후의 원소들을 탐색하며(j) prices[j]가 prices[i]보다 작아지거나, prices의 끝에 도달하는 경우 그 인덱스에서 i를 뺀 값을 저장한다.

맨 마지막 주식의 경우 무조건 0의 값을 가진다.


#include <vector>
using namespace std;

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



출처: https://programmers.co.kr



알고리즘algorithm프로그래머스 Share Tweet +1