PS/Baekjoon Online Judge
[백준 14007] Small Weird Measurements [Java]
kimyoungrok
2025. 3. 7. 00:19
728x90
문제
https://www.acmicpc.net/problem/14007
풀이
주어진 시퀀스에 대해 문제에서 주어진 이상한 구간의 수를 구하는 문제다.
이상한 구간은 다음과 같다.
- 자기 자신은 이상한 구간이 된다.
- 이전 요소의 차와 현재 요소의 차가 부호가 다르면 이상한 구간이 된다.
// Solve
int cnt = N;
for (int i = 0; i < N; ++i) {
long prevDiff = 0;
for (int j = i + 1; j < N; ++j) {
long diff = A[j] - A[j - 1];
요소의 차가 0이거나, 이전 요소의 차와 현재 요소의 차가 동일할 때는 이상한 구간이 아니게 된다.
위 조건문을 통해 이상한 구간이 맞다면 탐색을 중단하고, 다음 구간에 대한 탐색을 진행하자.
if (diff == 0 || prevDiff != 0 && diff * prevDiff > 0) {
break;
}
++cnt;
prevDiff = diff;
}
}
소스코드
https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/practice/14007.java
728x90