[백준/C++]1253번: 좋다 (작성중)

Eunho Bae·2022년 4월 2일
0

백준

목록 보기
19/40
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);

	int n;
	cin >> n;
	vector<int> v(n);
	for (int i = 0; i < n; i++)
		cin >> v[i];

	sort(v.begin(), v.end());
	int ans = 0;

	// 5 -2 -1 -1
	for (int i = 0; i < n; i++)
	{
		int left = 0;
		int right = n - 1; // i

		while (left < right) // 서로 다른 숫자 두 개를 더해야 하니까 <=가 아님
		{
			if (i == left)
			{
				left++;
				continue;
			}
			else if (i == right)
			{
				right--;
				continue;
			}

			int sum = v[left] + v[right];

			if (v[i] == sum)
			{
				ans++;
				break;
			}
			else if (v[i] < sum) // 합보다 작으면 작은 숫자가 필요하니까 right--
				right--;
			else
				left++;
		}
	}
	
	cout << ans;

	return 0;
}
profile
개인 공부 정리

0개의 댓글