https://www.acmicpc.net/problem/3273
#include <bits/stdc++.h>
using namespace std;
int main() {
int n,x,count=0;
int arr[1000001]={};
cin>>n;
for(int i=0;i<n;i++){
int temp;
cin>>temp;
arr[temp]++;
}
cin>>x;
for(int i=0;i< (x + 1) / 2;i++){
if (x - i > 1000000) continue;
if(arr[i]>0&&arr[x-i]>0)count+=min(arr[i],arr[x-i]);
}
if (x % 2 == 0 && arr[x / 2] > 1) {
count += arr[x / 2] / 2;
}
cout<<count;
}
- 배열의 범위를 초과하는 경우를 항상 조심하
- 중복 되는 수의 입력을 조심하자
'Algorithm > 백준' 카테고리의 다른 글
| [백준] 1654 - 랜선 자르기 (0) | 2026.03.13 |
|---|---|
| [백준] 10989 - 수 정렬하기 3 (0) | 2026.03.08 |
| 백준 - 15829 (0) | 2026.03.08 |
| 백준 - 2231 (0) | 2026.03.07 |
| 백준 - 1008 (0) | 2026.03.06 |