4 분 소요

🗒️ 3273번) 두 수의 합

#include <iostream>
using namespace std;

bool hasNum[2000001];
int nums[100000];

int main() 
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);

	int n;
	cin >> n;

	for (int i = 0; i < n; i++)
	{
		int ai;
		cin >> ai;

		nums[i] = ai;
		hasNum[ai] = true;
	}

	int x;
	cin >> x;

	int result(0);
	for (int i = 0; i < n; i++)
	{
        // x보다 큰 수 (X)
        // x 값의 1/2배인 수 (X) - 서로 다른 양의 정수이기 때문입니다.
		if (x <= nums[i] || x - nums[i] == nums[i])
			continue;
		else if (hasNum[x - nums[i]])
			++result;
	}

	cout << result / 2;

	return 0;
}

  • 합이 x값이 될 수 있는 수는 [1, x/2)이다.
for(int i=0; i<(x+1)/2; i++)
{
    if(hasNum[i] && hasNum[x-i]) ++result;
}

카테고리:

업데이트:

댓글남기기