이 문제는 투포인터 같이가기의 전형적인 문제이다.
먼저 문제는 A[i] + A[i+1] + … + A[j-1] + A[j] 처럼 합을 구하는 형식이기 떄문에 같이 가야한다.
아래의 풀이 방식은 시작은 left만 더한 상태로 sum 의상태를 보고 미리 가르키고 있는 right를 더한 후 right를 +1 인덱스 추가 시켜주는 방식이다.
이 방식은 sum 이 m 보다 큰데 가르키고 있던 right가 n을 초과하면 더이상 없다 판단하고 종료시키는 방법이다.
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
arr = list(map(int, input().split()))
arr.sort()
l = 0
r = 1
sum = arr[l]
result = 0
while True:
if sum < m:
if r < n:
sum += arr[r]
r += 1
else:
break
elif sum == m:
result += 1
sum -= arr[l]
l += 1
else:
sum -= arr[l]
l += 1
print(result)
'코딩 테스트 > 코딩 테스트 - 문제' 카테고리의 다른 글
[프로그래머스] 캐시 (0) | 2023.02.06 |
---|---|
[프로그래머스] N개의 최소공배수 (0) | 2023.02.06 |
[프로그래머스] 징검다리 (0) | 2023.02.02 |
[백준] 공유기 설치 (0) | 2023.02.02 |
[백준]평범한 배낭 (0) | 2023.02.02 |