728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/42588?language=cpp
#include <string>
#include <vector>
#include <stack>
#include <iostream>
using namespace std;
vector<int> solution(vector<int> heights) {
vector<int> answer;
stack<int>s; //데이터 거꾸로 담기
for (int i = heights.size()-1; i >= 1; i--) {
int flag = 0;// 수신 받는곳 없는거 체크 변수
for (int j = i - 1; j >= 0; j--) {
if (heights[i] < heights[j]) {
s.push(j+1);
flag = 1;// 들어간거 체크
break;
}
}
if (flag==0) {
s.push(0);
}
}
s.push(0);
while (!s.empty()) {
answer.push_back(s.top()); s.pop();
}
return answer;
}
이문제의 포인트는 뒤에서부터 그냥 이중 포문을 이용해서 조건에 맞으면 그때 저장해놓고
마지막으로 스택을 이용할 필요는 없지만 스택의 성질을 이용해서 answer에 다시 값을 저장하는 식으로 구현 했습니다.
그냥 백터에 저장하고 뒤에서 부터 answer에 저장해도되고 그냥 reverse 메소드를 이용해서 바꾸고 리턴해도 됩니다.
스택 문제라서 스택을 쓴것이니 참고 해주세요.
728x90
반응형
'알고리즘 모음집 > New 알고리즘' 카테고리의 다른 글
16235 나무 재테크 (0) | 2020.08.12 |
---|---|
프로그래머스 주식가격 (0) | 2020.08.12 |
15686 치킨배달 (0) | 2020.07.27 |
프로그래머스 다리를 지나는 트럭 (0) | 2020.07.25 |
15685 드래곤 커브 (0) | 2020.07.25 |
댓글