주식가격(프로그래머스)

링크텍스트

문제 이해

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

입출력 예
prices return
[1, 2, 3, 2, 3][4, 3, 1, 1, 0]

나만의 이해

사실 문제가 많이 난해하다. 나만 그런지는 모르겠지만 초 기준 시점이 매우 혼란스러웠다. 질문하기 칸에 써져있는 설명을 보고 prices 원소당 자기보다 큰 원소 갯수를 구하는 문제로 이해했고 만약 없으면 자기 자신만 하나 세어주면 된다. 마지막 인덱스에 있는 원소는 뒤에 시점이 없으니깐 0을 주면 된다.

Python

from collections import deque

def solution(prices):
    queue = deque(prices)
    answer = []
    
    while queue:
        price = queue.popleft()
        sec = 0
        for q in queue:
            sec += 1
            if price > q:
                break 
        answer.append(sec)        
    return answer

파이썬으로는 deque 함수를 이용했다. Popleft를 하면 인덱스 슬라이싱과 똑같은 기능을 해준다 [1:] 이런식으로. 그래서 하나씩 짤라가면서 카운트해서 결과를 리스트로 넣어 반환해주었다.

C++

#include <string>
#include <vector>

using namespace std;

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

CPP으로는 이중 for문을 사용해서 작성했다. 이것 역시 인덱스 기반으로 순회하면서 하나씩 push_back 해주고 반환해주면 된다.

좋은 웹페이지 즐겨찾기