프로그래밍/HackerRank
[HackerRank][Python3] Maximum Subarray Sum
snoopybox
2018. 5. 18. 03:22
Problem :
https://www.hackerrank.com/challenges/maximum-subarray-sum/problem
My Solution :
#!/usr/bin/env python3
def maximumSum(a, m):
s = 0
pfs = []
for i in range(len(a)):
s = (s + a[i]%m)%m
if s == m - 1: return s
pfs.append((i, s))
pfs = sorted(pfs, key=lambda x: x[1])
min_d = m
max_s = 0
for i in range(len(pfs) - 1):
if 0 < pfs[i+1][1] - pfs[i][1] < min_d and pfs[i][0] > pfs[i+1][0]:
min_d = pfs[i+1][1] - pfs[i][1]
max_s = pfs[i][1] - pfs[i+1][1] + m
return max(max_s, pfs[-1][1])
q = int(input())
for _ in range(q):
n, m = map(int, input().strip().split())
a = list(map(int, input().strip().split()))
print(maximumSum(a, m))