백준/실버
[백준 3273번] 두 수의 합
게임개발기원
2023. 2. 19. 20:15
문제의 합 : https://www.acmicpc.net/problem/3273
3273번: 두 수의 합
n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는
www.acmicpc.net
int main(void) {
ios_base::sync_with_stdio(false);
cin.tie(0);
int n, x;
vector<int> arr;
cin >> n;
for(int i=0; i<n; i++)
{
int num;
cin >> num;
arr.push_back(num);
}
cin >> x;
sort(arr.begin(), arr.end());
int l=0, h = n-1, cnt=0;
while(l<h)
{
int sum = arr[l] + arr[h];
if (sum == x) //목표 수일 경우
{
cnt++;
l++;
h--;
}
else if (sum < x)
{
l++;
}
else
{
h--;
}
}
cout << cnt;
return 0;
}
배열의 맨 처음값과 맨 마지막 값의 합을 처음으로 시작
목표 값이면 cnt를 증가시키고 low, high 인덱스를 증가 및 감소
합이 목표값보다 작으면 low 증가, 크면 high 감소