📍 문제
📍 풀이
자료구조 deque 사용
deque에 입력 받은 원소들 삽입
첫 번째 for문에서
먼저,
deque의 첫번째 원소를 변수 a에 저장 (a에 저장된 값이 현재 계산할 주식 price)
deque의 첫번째 원소 pop
그리고 두 번째 for문에서
1) a (현재 비교를 할 price)보다 deque의 i번째 원소보다 크거나 같으면 cnt++ 를 해 준다 (가격이 떨어지지 않은 경우)
2) 그렇지 않으면, 가격이 떨어졌으므로, cnt++를 해 주고 break로 반복문을 빠져나간다
여기서 cnt++를 해 주는 이유는 [ 1, 2, 3, 2, 3 ] 의 예에서 3->2 에서 가격이 떨어지지 않은 시간은 1이다.
🤔 여기서 잠깐!
이 문제는 prices의 길이는 10,000 이하이다.
따라서 보통의 문제에서는 이중 for문을 돌리게 되면, O(N^2)으로 시간초과가 나게 된다.
하지만 특이하게도 이 문제에서는 시간초과가 나지 않는다.
O(N)의 시간복잡도로 푸는 방법에 대해서도 생각해 보아야 한다. => 이후 글 참고~!
📍 코드
#include <vector>
#include <deque>
#include <iostream>
using namespace std;
vector<int> solution(vector<int> prices) {
vector<int> answer;
deque<int> d;
for (int i{ 0 }; i < prices.size(); i++) {
d.push_back(prices[i]);
}
for (int i{ 0 }; i < prices.size(); i++) {
int cnt = 0;
int a = d.front();
d.erase(d.begin());
for (int i{ 0 }; i < d.size(); i++) {
if (a <= d[i]) {
cnt++;
}
else {
cnt++;
break;
}
}
answer.push_back(cnt);
}
return answer;
}
'백준 & 프로그래머스' 카테고리의 다른 글
[BOJ/백준] C++ 1927번 최소 힙 (0) | 2023.07.13 |
---|---|
[프로그래머스] Lv.2 가장 큰 수 C++ (0) | 2023.07.10 |
[프로그래머스] Lv.2 올바른 괄호 C++ _ <더 간단한 풀이> (0) | 2023.07.07 |
[BOJ/백준] C++ 17298번 오큰수 (0) | 2023.07.07 |
[프로그래머스] Lv.2 올바른 괄호 C++ (0) | 2023.07.06 |