728x90
반응형
SMALL
https://www.acmicpc.net/problem/10986
10986번: 나머지 합
수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j)
www.acmicpc.net
import java.util.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(); // 입력받을 숫자갯수 입력
int M = sc.nextInt(); // 나눌려고 하는 수 입력
long sum [] = new long [N]; //숫자 입력 할 배열
long count [] = new long [M]; //합배열
long result = 0; //초기화
sum[0] = sc.nextInt();
for(int i = 1; i < N; i++) {
sum[i] = sum[i-1] + sc.nextInt();
}
for(int i = 0; i < N; i++) {
int remain = (int)(sum[i] % M);
if(remain == 0) {
result++;
}
count[remain]++;
}
for(int i=0; i<M; i++) {
if(count[i] > 1) {
long cnt = count[i];
result = result + (cnt * (cnt - 1) / 2);
}
}
System.out.println(result);
}
}
728x90
반응형
LIST
'알고리즘 > 알고리즘 코딩테스트_자바편(책)' 카테고리의 다른 글
| 백준_11660번_구간합구하기2 (1) | 2024.02.14 |
|---|---|
| 백준_11659번_구간합구하기 (0) | 2024.01.31 |
| 백준_1546번_평균구하기 (0) | 2024.01.30 |
| 백준_11720번_숫자의합구하기 (1) | 2024.01.29 |
| 3. 자료구조 (0) | 2024.01.29 |