문제)
정답 코드)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
import sys
#sys.stdin = open("input.txt", 'r')
n, m=map(int, input().split())
a=list(map(int, input().split()))
lt=0#왼쪽 포인터
rt=1#오른쪽 포인터
tot=a[0]#합
cnt=0#카운트
while True:
if tot<m:#더한 값이 m보다 작으면 오른쪽으로 한칸 더하기
if rt<n:
tot+=a[rt]
rt+=1
else:#오른쪽으로 갈 수 없으면 종료
break
elif tot==m:#정답이라면
cnt+=1#카운트 하고
tot-=a[lt]#가장 왼쪽 값 빼주기
lt+=1#왼쪽 포인터 증가
else:#크다면 정답일때와 똑같은 동작(카운트는 x)
tot-=a[lt]
lt+=1
print(cnt)#정답
|
cs |
'코딩테스트 with PYTHON' 카테고리의 다른 글
[python] 코딩테스트 대비 - 2차원배열 다이아몬드 (0) | 2022.01.10 |
---|---|
[python] 코딩테스트 대비 - 2차원 배열 합 (0) | 2021.12.20 |
[python] 코딩테스트 대비 - 정렬된 리스트 합치기 (0) | 2021.12.16 |
[python] 코딩테스트 대비 - 카드 역배치(리스트 뒤집기) (0) | 2021.12.14 |
[python] 코딩테스트 대비 - 문자열에서 숫자만 추출 (0) | 2021.12.14 |