https://www.acmicpc.net/problem/21318
문제
풀이
package programmers;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import static java.util.Arrays.stream;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) throws IOException {
int n = Integer.parseInt(br.readLine());
int[] arr = stream(("0 "+br.readLine()).split(" "))
.mapToInt(Integer::parseInt)
.toArray();
int[] dp = new int[n+1];
arr[0] = arr[1];
for(int i=1;i<=n;i++){
if(arr[i] < arr[i-1]){ // i-1 번째 곡이 i 곡보다 더 어렵다면 i-1 번째에 실수 +1
dp[i-1]++;
}
dp[i] = dp[i-1]; // i번째 기본값으로 이전 i-1 번째 실수 누적 합으로 넣기
}
int queryCount = Integer.parseInt(br.readLine());
StringBuilder result = new StringBuilder();
for(int i=0;i<queryCount;i++){
int[] query = stream(br.readLine().split(" "))
.mapToInt(e -> Integer.parseInt(e)-1)
.toArray();
// 전 구간 -1 한 이유
// 마지막 곡에선 실수를 하지 않기때문에 마지막 곡 그 전 인덱스 까지만 본다.
// 첫 곡 이전 실수 까지 가져와야하기 때문에 첫 곡 그 전 인덱스 까지만 본다.
result.append(dp[query[1]] - dp[query[0]]+"\n");
}
System.out.println(result);
}
}