[two pointer] (3-5) list의 구간을 두개의 포인터로, 시간복잡도 줄이기
문제: 수들의 합N개의 수로 된 수열 A[1], A[2], ..., A[N] 이 있다. 이 수열의 i번째 수부터 j번째 수까지의 합 A[i]+A[i+1]+...+A[j-1]+A[j]가 M이 되는 경우의 수를 구하는 프로그램을 작성하시오. 첫째 줄에 N(1≤N≤10,000), M(1≤M≤300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], ..., A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. 첫째 줄에 경우의 수를 출력한다. 입력예제8 31 2 1 3 1 1 1 2출력예제5 위 문제는 1≤N≤10,000 의 제한을 가지고있다. 그렇기 때문에 combinations를 이용해 모든 조합 쌍을 찾는 방법은 애초에 불가능하고, 가능하다해도 비효..
2024.06.17