[백준] 📂. (3273번) 두 수의 합
🗒️ 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;
}
댓글남기기