"꾸준하고 완벽한 한 걸음"

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