문제설명
소스코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Boj_10986 {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
int[] arr = new int[N];
for (int i = 0; i < N; ++i) {
arr[i] = Integer.parseInt(st.nextToken());
}
long count = 0;
long[] prefixSum = new long[N + 1];
long[] remainArr = new long[M];
for (int i = 1; i <= N; ++i) {
prefixSum[i] = arr[i - 1] + prefixSum[i - 1];
int remainder = (int) (prefixSum[i] % M);
if(remainder == 0) ++count;
++remainArr[remainder];
}
for(int i = 0; i < M; ++i){
if(remainArr[i] >= 2) count += (remainArr[i] * (remainArr[i] - 1) / 2);
}
System.out.println(count);
}
}
설명
아래의 영상을 보고 이해하는 것이 글로 이해하는 것보다 훨씬 빠를 것이다.
https://www.youtube.com/watch?v=Ud-qe0t5KA8&ab_channel=%ED%95%98%EB%A3%A8%EC%BD%94%EB%94%A9
'자료구조 & 알고리즘 > BOJ' 카테고리의 다른 글
[Java] 백준 11660번 문제(구간 합 구하기 5) (0) | 2024.07.04 |
---|---|
[Java] 백준 11659번 문제(구간 합 구하기 4) (1) | 2024.07.03 |
[Java] 백준 5988번 문제 (0) | 2024.07.02 |
[Java] 백준 16916번 문제 (부분 문자열) (0) | 2023.11.29 |
[Java] 백준 1786번 문제(찾기) (0) | 2023.11.29 |