[백준 3273] 두 수의 합
카테고리: BOJ
태그: Cpp SILVER III 두 포인터 정렬 Coding Test
난이도
실버 III
📜문제
🔎접근
🌞풀이
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int N = 0;
cin >> N;
vector<int> v(N);
for (int i = 0; i < N; i++)
{
cin >> v[i];
}
sort(v.begin(), v.end());
int X = 0;
cin >> X;
int start = 0;
int end = v.size() - 1;
int cnt = 0;
while (start < end)
{
int sum = v[start] + v[end];
if (sum >= X)
{
if (sum == X) cnt++; // 합이 X인 경우
end--;
}
else start++;
}
cout << cnt << "\n";
return 0;
}
일정 범위 안에서 서로 다른 두 수의 합이 X가 되는 경우를 찾는것이라 투 포인터를 통해 두 값을 이동해 가면서 값을 구한다. 맨 위로 이동하기
댓글남기기