투포인터 4

[도구정리] 투포인터

투포인터란? 인덱스를 두 개로 두어 O(N^2)이 될 수 있는 탐색을 O(N)으로 만들어주는 것이다.예를 들어보자. 연속된 숫자가 존재하는 배열(1,2,3,4,5,1,2,3,4,5,) 같이 존재한다. 이때 연속된 수열의 합을 구하여 원하는 숫자가 나올 수 있는 경우의 수를 구하는 문제이다.투포인터를 쓰지 않는다면 원하는 숙자가 15일 때, 1 + 2 + 3 + 4 + 5를 하고 정답!을 찾은 다음 2, 2 + 3, 2 + 3 + 4 이런 식으로 또 찾아야 한다는 문제가 생긴다는 것이다. 즉, 인덱스의 시작 지점과 끝지점 같이 저장해 두면 편한 정보를 두 가지로 나누어 저장함으로써 답을 효율적으로 찾는 알고리즘이다. 코드를 함께 보자.int start = 0, end = 0, sum = 0, answer ..