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
'PS > Baekjoon Online Judge' 카테고리의 다른 글
[백준 01013] Contact [Java] (0) | 2025.03.07 |
---|---|
[백준 17521] Byte Coin [Java] (0) | 2025.03.07 |
[백준 20410] 추첨상 사수 대작전! (Easy) [Java] (0) | 2025.03.06 |
[백준 15685] 드래곤 커브 [Java] (0) | 2025.03.04 |
[백준 03980] 선발 명단 [Java] (0) | 2025.03.03 |