리트코드(LeetCode) 알고리즘 문제풀이 - 739. Daily Temperatures - C++/CPP

Taesun Lee·2020년 7월 31일
0

algorithm-study

목록 보기
1/10

문제

https://leetcode.com/problems/daily-temperatures/

기억할 문법

vector 초기화

아래와 같이 첫번째 인자로 초기화할 vector 길이 int를 넣고, 두번째 인자로 초기화할 type에 맞는 data 를 넣는다.

vector<int> answer('초기화할 vector 길이 int', '초기화할 data (int)');

deque의 가장 마지막/처음 원소 접근

아래와 같이 back(), front() function들을 이용한다.

deque<int> q;
q.back(); // 가장 마지막 원소 접근
q.front(); // 가장 처음 원소 접근

Solution

Solution의 Approach #2: Stack의 알고리즘을 이용해서 C++로 문제를 풀었다.

class Solution {
public:
    vector<int> dailyTemperatures(vector<int>& T) {
        vector<int> answer(T.size(), 0);
        
        deque<int> q;
        
        for(int i=T.size()-1; i>-1; i--) {
            while(q.size() != 0 && T[q.back()] <= T[i]) {
                q.pop_back();
            }
            answer[i] = q.size() == 0 ? 0 : q.back() - i;
            q.push_back(i);
        }
        
        return answer;
    }
};
profile
구름위 개발자

0개의 댓글