728x90
반응형

28014번: 첨탑 밀어서 부수기
문제
https://www.acmicpc.net/problem/28014
28014번: 첨탑 밀어서 부수기
첫째 줄에 첨탑의 개수 $N$이 주어진다. $(1\leq N\leq 5\,000\,000)$ 둘째 줄에는 앞에서부터 차례대로 첨탑의 높이 $H_1, H_2, \cdots, H_n (1\leq H_i\leq 1\,000\,000)$ 이 주어진다. 입력으로 주어지는 모든 수는 정
www.acmicpc.net
풀이
밀려 넘어지는 첨탑의 높이가 바로 그다음 첨탑의 높이보다 클 때만 그다음 첨탑도 밀려 넘어진다는 것은 밀려 넘어지는 첨탑의 높이가 바로 그다음 첨탑의 높이보다 작거나 같을 때 다음 첨탑을 밀어야 한다. 즉, i번째 첨탑과 i+1번째 첨탑의 높이를 비교해 i+1번째 첨탑의 높이가 같거나 클 때만 카운트를 증가시킨다. 단, 첫 번째 첨탑은 반드시 밀어야 하므로 카운트는 1부터 시작한다.
아래 코드는 첨탑의 뒤부터 탐색해서 i번째를 i-1번째, i+1번째를 i번째라고 생각하면 된다.
코드
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n, ans = 1;
cin >> n;
vector<int> v(n);
for (int i = 0; i < n; i++)
cin >> v[i];
for (int i = n - 1; i > 0; i--)
if (v[i] >= v[i - 1])
ans++;
cout << ans;
return 0;
}
728x90
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[백준 / BOJ] C++ 11966 2의 제곱인가? (2) | 2023.05.09 |
---|---|
[백준 / BOJ] C++ 16507 어두운 건 무서워 (2) | 2023.05.08 |
[백준 / BOJ] C++ 2583 영역 구하기 (8) | 2023.05.06 |
[백준 / BOJ] C++ 19568 직사각형 (6) | 2023.04.23 |
[백준 / BOJ] C++ 11441 합 구하기 (2) | 2023.04.22 |