BOJ [BJ]G3 10986. 나머지 합 - 728x90 BJ G3 10986 나머지 합 문제링크 https://www.acmicpc.net/problem/10986 10986번: 나머지 합 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) www.acmicpc.net * 일단 문제를 정독 하고 1시간 이상 반드시 고민이 필요합니다. 동영상 설명 1시간 이상 고민 했지만 아이디어가 떠오르지 않는다면 동영상에서 약간의 힌트를 얻어봅시다. 구독도 누를께요. https://youtu.be/siBSDIbXZCU 소스보기 동영상 설명을 보고도 전혀 구현이 안된다면 연습 부족입니다. 소스를 보고 작성해 본 후 스스로 백지 상태에서 3번 작성해 볼 의지가 있다면 소스를 살짝 보세요. 꼭 작성할 각오가 되어있습니다. package bj.gold.l3; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.StringReader; import java.util.StringTokenizer; /** * @author 은서파 * @since 2022. 8. 3. * @see https://www.acmicpc.net/problem/10986 * @git https://github.com/quietjun/algo_aps/blob/master/src/main/java/bj/gold/l3/BJ_G3_10986_나머지합.java * @youtube * @performance 161192 464 * @category #누적합 * @note 기본적인 누적합에 %응용 추가 */ public class BJ_G3_10986_나머지합 { static BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); static StringBuilder output = new StringBuilder(); static StringTokenizer tokens; static int N, M; static int[] modCnt; static int A; public static void main(String[] args) throws IOException { input = new BufferedReader(new StringReader(src)); tokens = new StringTokenizer(input.readLine()); N = Integer.parseInt(tokens.nextToken()); M = Integer.parseInt(tokens.nextToken()); modCnt = new int[M]; // 우리가 필요한 것은 나머지의 개수!! tokens = new StringTokenizer(input.readLine()); int sum = 0; for (int n = 0; n < N; n++) { sum = (sum + Integer.parseInt(tokens.nextToken())) % M; modCnt[sum]++; } long cnt = modCnt[0]; for (int i = 0; i < modCnt.length; i++) { // 형변환 주의 cnt += (long) modCnt[i] * (modCnt[i] - 1) / 2; // 조합 과정에서 나온 결과 } //System.out.println(Arrays.toString(modCnt)); System.out.println(cnt); } // REMOVE_START private static String src = "5 3\n" + "1 2 3 1 2"; // REMOVE_END } 728x90 공유하기 URL 복사카카오톡 공유페이스북 공유엑스 공유 게시글 관리 구독하기알고보면 참 쉬운 Algo Contents BJG310986나머지합 문제링크 동영상설명 소스보기 당신이 좋아할만한 콘텐츠 [BJ] 01655. 가운데를 말해요. 2024.01.16 [BJ]17213. 과일서리 2022.12.13 [BJ]S2_12891_DNA문자열 2022.12.01 [BJ]1342. 행운의 문자열 2022.08.14 댓글 0 + 이전 댓글 더보기