728x90
문제
https://www.acmicpc.net/problem/10986
10986번: 나머지 합
수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j)
www.acmicpc.net
풀이
누적합을 사용해 풀었습니다.
ramainder
에 누적합의 나머지 개수를 저장합니다.
\(_{i}{C}_{2}\) 를 계산해 answer
에 더합니다.
코드
파이썬
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
A = list(map(int, input().split()))
total = 0
remainder = [0] * M
for i in range(N):
total += A[i]
remainder[total % M] += 1
answer = remainder[0]
for i in remainder:
answer += (i * (i-1)) // 2
print(answer)
728x90
'🚩 코딩테스트 > 알고리즘' 카테고리의 다른 글
[백준] 14500번: 테트로미노 (1) | 2023.05.10 |
---|---|
[백준] 16586번: 치킨 배달 (0) | 2023.05.09 |
[백준] 1806번: 부분합 (0) | 2023.05.08 |
[프로그래머스] 크레인 인형뽑기 게임 (0) | 2023.03.16 |
[백준] 9019번: DSLR (0) | 2023.03.16 |