programming language/Algorithm

Two Pointer 개념 정리

jellylucy 2024. 2. 7. 12:23

간단하게 두개의 인덱스를 이용해서 최적의 해를 구하는 것이다.

 

보통 start, end = 0, 0 으로 둔 뒤 end의 값을 늘려간다.

그리고 필요시 start += 1을 해주면서 두 인덱스 값을 조절한다.

 

특정한 합을 찾는 연속 수열

n, m = map(int, input().split())
graph = list(map(int, input().split()))

for start in range(n):
	while result < m and end < n:
    	result += graph[end]
        end += 1
    
    if result == m:
    	count += 1
    
    result -= graph[start]
   
print(count)

 

해당 문제에서는 모든 부분수열의 경우의 수를 다 확인하면서 찾는 공간을 사용해야한다..

그래서 end 만 이동시키는 것 뿐만 아니라, 

start 또한 앞으로 한 번씩 움직인다.