728x90
[문제 설명]
초 단위로 기록된 주식가격이 담긴 배열 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은 끝까지 가격이 떨어지지 않았습니다.
- 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다.
- 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다.
- 4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다.
- 5초 시점의 ₩3은 0초간 가격이 떨어지지 않았습니다.
[문제 풀이]
우선, 브루트포스로 푸는 방법밖에 생각이 안나서 이중 for문으로 풀었다.
첫 인덱스부터 뒤에 자기보다 작은게 있는지 체크하도록.. 약, N^2의 시간복잡도를 가질것 같다.
answer 벡터를 입력으로 들어오는 prices 벡터의 크기로 초기화해주었다.
벡터는 생성할때 기본으로 0으로 초기화 된다. (마지막 값을 신경써주지 않아도 된다. 마지막 값은 무조건 0)
for문을 돌면서 뒤에 값들이 자기보다 크거나 같다면 answer의 해당 인덱스의 값을 1씩 증가시켜주고,
그렇지 않다면 break를 걸어 다음 인덱스를 검사할수 있도록 코드를 작성했다.
파이팅 !
코드가 깨끗하고 명확하게 보일진 모르겠지만, 누군가에게 도움이 될 수도.. 있기에..
더보기
#include <string>
#include <vector>
#include <queue>
using namespace std;
vector<int> solution(vector<int> prices) {
int priceSize = prices.size();
vector<int> answer(priceSize);
for(int i =0; i < priceSize-1; i++)
{
for(int j = i+1; j < priceSize; j++)
{
if(prices[i] <= prices[j]) answer[i]++;
else
{
answer[i] += 1;
break;
}
}
}
return answer;
}
'Problem Solving > 프로그래머스' 카테고리의 다른 글
[프로그래머스] - 소수 찾기(C++) (0) | 2022.07.20 |
---|---|
[프로그래머스] - 모음사전 (C++) (0) | 2022.07.19 |
[프로그래머스] - 기능개발(C++) (0) | 2022.07.09 |
[프로그래머스] - 프린터(C++) (0) | 2022.07.09 |
[프로그래머스] - 다리를 지나는 트럭(C++) (0) | 2022.07.08 |