[알고리즘] 백준 2003 수들의 합2

CHOI IN HO·2024년 4월 7일
0

코딩테스트

목록 보기
69/74

풀이

1차원 배열에서 연속된 배열이나 특정 값을 구하는 문제에서는 투포인터를 사용해서 시간복잡도를 줄일 수 있다.

import sys
input = sys.stdin.readline

n, s = map(int, input().split())
A = list(map(int, input().split()))

def two_sum(nums, target):
    s,e,count = 0,0,0
    sum = nums[0]

    while e < n:
        if sum == target:
            count+=1
            sum -= A[s]
            s +=1
        elif sum < target:
            e += 1
            if e >= n:
                break
            sum += A[e]
        elif sum > target:
            sum -= A[s]
            s +=1
    return count
print(two_sum(A, s))
profile
개발자기 되기 위해선 무엇이든!

0개의 댓글