#include <iostream>
#include <algorithm>
#include <vector>
 
int main()
{
	int N = 0;
	std::cin >> N;
 
	int iAnswer = 0;
	std::vector<long long> vec(N);
 
	for (int i = 0; i < N; ++i)
	{
		std::cin >> vec[i];
	} 
 
	sort(vec.begin(), vec.end());	
 
	for (int i = 0; i < N; ++i) 
	{	
		int iLeft = 0;
		int iRight = N - 1;
 
		while (iLeft < iRight) 
		{
			if (iLeft == i) 
			{
				++iLeft;
				continue; 
			}
 
			if (iRight == i)
			{
				--iRight;
				continue;
			}
 
			if (vec[i] > vec[iLeft] + vec[iRight]) 
				++iLeft;
 
			else if (vec[i] == vec[iLeft] + vec[iRight])
			{ 
				++iAnswer;
				break;
			}
 
			else 
				--iRight; 
		}
	}
 
	std::cout << iAnswer;
 
	return 0;
}

처음엔 이분탐색으로 모든 걸 더해서 풀라했더니

본인 것도 같이 더한 게 들어가더라...

결국엔 투포인트로 푸는 게 제일 쉬운 방법이었다...

+ Recent posts