Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- pass
- next_permutation
- c++
- DP
- Gold 4
- 백트래킹
- 2020 KAKAO BLIND
- DFS
- 삼성 SW 역량 테스트
- BFS
- 부스트코스
- 프로그래머스
- Level 3
- SWEA
- Level 4
- Gold 5
- 브루트포스
- 코드리뷰
- 백준
- level 1
- 월간 코드 챌린지
- 시뮬레이션
- 스택/큐
- Web
- Level 2
- 구현
- 그리디
- 2020 카카오 인턴십
- 2019 KAKAO BLIND
- 코드 리뷰
Archives
- Today
- Total
Min:D's Devlog
[프로그래머스][스택/큐][C++] 주식가격 본문
문제
프로그래머스 스택/큐 - 주식가격 (Level 2)
문제 풀이
접근 방식
초 단위로 기록된 주식 가격 배열이 주어질 때,
매 시점마다 가격이 떨어지지 않은 기간을 구하는 문제이다.
이 문제는 이중 for문을 사용하여 기준값보다 더 낮은 가격일 때까지의 기간을 측정하여 문제를 해결하였다.
스택을 이용하여 문제를 해결할 수도 있다.
이중 for문을 이용한 방법보다는 더 빨랐으나 큰 차이는 나지 않았다.
(스택을 이용한 풀이도 아래에 작성하였다.)
풀이 코드 - C++
// 풀이 1 : 이중 for문을 이용한 풀이
#include <vector>
using namespace std;
vector<int> solution(vector<int> prices) {
int len = prices.size();
int count = 0;
vector<int> answer(len);
for(int i = 0; i < len - 1; i++) {
for(int j = i+1; j < len; j++) {
answer[i]++;
if(prices[i] > prices[j])
break;
}
}
return answer;
}
// 풀이 2 : 스택을 이용한 풀이
#include <string>
#include <vector>
#include <stack>
using namespace std;
vector<int> solution(vector<int> prices) {
vector<int> answer(prices.size());
stack<int> s;
int len = prices.size();
for(int i = 0; i < len; i++){
// 현재 시점의 주식의 가격이 스택의 top에 저장된 시점의 가격보다 낮은 경우
while(!s.empty() && prices[s.top()] > prices[i]){
answer[s.top()] = i - s.top();
s.pop();
}
// s에는 현재 시점을 저장
s.push(i);
}
// 가격이 떨어지지 않은 시점
while(!s.empty()){
answer[s.top()] = len - s.top() - 1;
s.pop();
}
return answer;
}
실행 결과
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][해시][C++] 베스트앨범 (0) | 2020.10.26 |
---|---|
[프로그래머스][스택/큐][C++] 프린터 (0) | 2020.10.23 |
[프로그래머스][Summer/Winter Coding(~2018)][C++] 스킬트리 (0) | 2020.10.19 |
[프로그래머스][그리디][C++] 섬 연결하기 (0) | 2020.10.09 |
[프로그래머스][DFS/BFS][C++] 타겟 넘버 (0) | 2020.09.24 |
Comments