문제의 합 : https://www.acmicpc.net/problem/3273
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 감소
'백준 > 실버' 카테고리의 다른 글
[백준 1740번] 거듭제곱 (C++) (0) | 2023.02.21 |
---|---|
[백준 11123번] 양 한마리... 양 두마리... (C++) (0) | 2023.02.20 |
[백준 11332번] 시간초과 (C++) (0) | 2023.02.14 |
[백준 16401번] 과자 나눠주기 (C++) (0) | 2023.02.13 |
[백준 21314번] 민겸 수 (C++) (0) | 2023.02.12 |