728x90
https://www.acmicpc.net/problem/2015
# 시간 초과
# 슬라이싱해서 부분합 구하기
n, k = map(int, input().split())
a = list(map(int, input().split()))
cnt = 0
for i in range(n):
for j in range(i+1,n+1):
hap = a[i:j]
if sum(hap) == k:
cnt += 1
# l = (list(itertools.islice(a,i,j)))
# if sum(l) == k:
# cnt+=1
print(cnt)
# 메모리 초과
# 조합
# [(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)] => len(2)
# [(0, 1, 2), (0, 1, 3), (0, 2, 3), (1, 2, 3)] => len(3)
# [(0, 1, 2, 3)] => len(4)
# (x, ...., y) 중 y - x 가 len(2,3,4) - 1인 경우에만 n 에 삽입
import itertools
n, k = map(int, input().split())
a = list(map(int, input().split()))
cnt = 0
if k in a:
cnt += 1
for i in range(2,n+1):
m = list(itertools.combinations(range(len(a)),i))
n = []
for j in range(len(m)):
if m[j][i-1]-m[j][0] == i-1:
n.append ((a[m[j][0]],a[m[j][i-1]]))
for j in range(len(n)):
if sum(n[j]) == k:
cnt += 1
print(cnt)
# 시간 초과
# ([1], [1,2], [2,3,4]) ,([2],[2,3]), ([3,4], [5]) sum 비교
# ([1,2,3], [1,2,3,4], [4]) sum 비교
n, k = map(int, input().split())
a = list(map(int, input().split()))
cnt = 0
for i in range(n-1,0,-2):
for j in range(n,i,-1):
if sum(a[j-i-1:j]) == k:
cnt += 1
if sum(a[j-i-1:j-1]) == k:
cnt += 1
if j == 0 and sum(a[j:]) == k:
cnt +=1
print(cnt)
반응형
'전.py' 카테고리의 다른 글
백준 12919 A와 B 2 (0) | 2020.12.13 |
---|---|
백준 1434 책 정리 (0) | 2020.12.13 |
백준 1002 터렛 (0) | 2020.12.13 |
백준 14888 연산자 끼워넣기 (0) | 2020.12.13 |
백준 1697 숨바꼭질 (0) | 2020.12.13 |