[백준 17608]막대기 문제 최댓값 갱신 원리 및 논리 파악하기!

2023. 2. 16. 02:47자료구조 및 알고리즘/백준

728x90

자주 쓰이는 트릭

#include <iostream>
#include <stack>
using namespace std;

int main() {
    int max = 0, n, m, cnt = 0;
    stack<int> s;

    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cin >> m;
        s.push(m);
    }
    while (s.size())
    {
        if (max < s.top()) // max=0으로 함으로써 꼬임없이 잘 할 수 있다.
        { // 따라서 첫번째는 무조건 cnt++

            //그런데 이전 값보다 큰지 안큰지 비교하고 갱신해야한다.
            max = s.top();
            cnt++;
        }
        s.pop();
    }
    cout << cnt;
}

 

출처는 https://korean-otter.tistory.com/entry/17608-%EB%B0%B1%EC%A4%80-%EB%A7%89%EB%8C%80%EA%B8%B0-C

728x90