소스코드
N,M = map(int,input().split())
A= list(map(int,input().split()))
start=0
answer=0
end=0
while start <= end and end <= len(A):
summ = sum(A[start:end])
if summ == M:
answer += 1
if summ <= M:
end += 1
continue
elif summ > M and start < end:
start += 1
continue
else:
start += 1
end += 1
print(answer)
알고리즘
무지성으로 더하기를 하면 되겠지 하고 간단하게 풀었다가 시간초과가 나서 다시 고민해서 풀어본 문제였다.
1. 리스트의 처음과 끝에 대해 설정을 해주고
2. 리스트 요소의 합의 경우에 따라 조건을 설정해주며 진행하면 된다.
(합이 M인경우 -> 답 +1
합이 M보다 작은 경우 -> 뒤에 원소를 더함
합이 M보다 큰 경우 -> 앞의 원소를 뺌)
'Coding test' 카테고리의 다른 글
[백준/4375/파이썬] 1 (0) | 2023.02.13 |
---|---|
[백준/16974/파이썬] 레벨 햄버거 - 재귀 (0) | 2023.02.12 |
[백준/1309/파이썬] 동물원 - DP (0) | 2023.02.10 |
[백준/14889/파이썬] 스타트와 링크 (0) | 2023.02.07 |
[백준/11726/파이썬] 2×n 타일링 (0) | 2023.02.06 |