Skip to content

Commit b6930a7

Browse files
committed
[BOJ] #10986. 나머지 합 / 골드3 / 60분 / 실패
1 parent 47702ff commit b6930a7

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

.DS_Store

0 Bytes
Binary file not shown.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import sys
2+
sys.setrecursionlimit(10**6) # 최대 재귀한도 깊이
3+
input = sys.stdin.readline
4+
5+
# 초기화
6+
n, m = map(int, input().strip().split()) # n: 수의 개수, m: 조건으로 주어진 합
7+
arr = list(map(int, input().strip().split())) # 수열
8+
9+
prefix_sums = [0] * n
10+
prefix_sums[0] = arr[0]
11+
12+
# 누적합 계산
13+
for i in range(1, n):
14+
prefix_sums[i] = prefix_sums[i-1] + arr[i]
15+
16+
# 나머지 값 빈도수를 저장할 해시맵
17+
mod_count = {}
18+
mod_count[0] = 1 # 처음부터 M으로 나누어 떨어지는 경우를 위해 초기화
19+
count = 0
20+
21+
# 누적합 배열 순회ㅣ
22+
for p in prefix_sums:
23+
mod = p % m
24+
if mod in mod_count: # 동일한 나머지값이 있는 경우
25+
count += mod_count[mod] # 해당 나머지 갑싀 빈도수만큼 count에 더해줌
26+
mod_count[mod] += 1 # 해당 나머지 값의 빈도수 +1
27+
else:
28+
mod_count[mod] = 1 # 새로운 나머지 값 추가
29+
30+
print(count)

0 commit comments

Comments
 (0)