※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 14009번 문제인 Large Weird Measurements이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/14009
14009번: Large Weird Measurements
The intervals with measurements [1], [1,4], [4], [4], [4,2], [4,2,5], [4,2,5,2], [2], [2,5], [2,5,2], [5], [5,2], [2], [2,1], and [1] are weird. Note that there are TWO intervals that corresponds to the measurement [4], so it is counted twice.
www.acmicpc.net
각 ai별로 해당 숫자에서 끝나는 구간의 수를 답에 그때그때 더해 문제를 해결하자.
이전 하나의 숫자만을 봐야하는 상황인지 두 개의 숫자를 봐야하는 상황인지를 구별하고, 이전 수와 같은 수가 연속으로 나왔는지 다른 수가 연속으로 나왔는지, 그리고 증가 및 감소가 둘다 있는지를 순서대로 잘 따져 코드를 작성하자.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
typedef long long ll;
int arr[200000];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
ll ans = 0;
int N; cin >> N;
for (int i = 0; i < N; i++) cin >> arr[i];
int cnt = 0;
for (int i = 0; i < N; i++) {
if (cnt == 0) cnt++;
else if (cnt == 1) {
if (arr[i - 1] != arr[i]) cnt++;
}
else {
if (arr[i - 1] == arr[i]) cnt = 1;
else if ((arr[i - 2] < arr[i - 1]) != (arr[i - 1] < arr[i])) cnt++;
else cnt = 2;
}
ans += cnt;
}
cout << ans;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 14011 // C++] Small PhD Restaurant (0) | 2022.05.14 |
---|---|
[BOJ 14012 // C++] Large PhD Restaurant (0) | 2022.05.14 |
[BOJ 14007 // C++] Small Weird Measurements (0) | 2022.05.13 |
[BOJ 14008 // C++] Medium Weird Measurements (0) | 2022.05.13 |
[BOJ 14006 // C++] Large Ping Pong Tournament (0) | 2022.05.12 |