#include <bits/stdc++.h>
using namespace std;
int main(){
int m, n;
string s;
int ret = 0;
string arr[15001];
string f[15001];
int tmp;
cin >> m;
cin >> n;
for(int i = 0; i < m; i++){
cin >> arr[i];
}
for(int i = 0; i < m; i++){
tmp = stoi(arr[i]);
f[i] = to_string(n - tmp);
}
for(int i = 0; i < m; i++){
auto it = find(begin(arr), end(arr), f[i]);
if(it != end(arr)){
ret++;
}
}
ret = ret / 2;
cout << ret;
}
#include <bits/stdc++.h>
using namespace std;
int n, m, a[15001], cnt;
int main(){
cin >> n >> m;
for(int i = 0; i < n; i++){
cin >> a[i];
}
for(int i =0; i <n; i++){
for(int j = i +1; j <n; j++){
if(a[i] + a[j] == m){
cnt++;
}
}
}
cout << cnt <<'\n';
}
합이 n이 나와야 하니까 n에서 입력 값을 뺀다.
그 값들로 배열을 만들어서 원래 배열에서 이 배열을 find로 검색해본다.
find는 문자열로만 가능하니까 입력 값들은 모두 문자열로만 한다.
검색하면 값이 원하는 값의 2배가 나오니 2로 나눠서 출력하면 된다고 생각했다.
뭔가 값을 수정하는 것도 많고 조합으로 할 수 있을듯 해서 수정해봤다.
15000개까지 입력을 받아야 하니 이중 for문으로 조합을 구현하는건 불가능하다고 생각했다.
근데 막상 구현해보니 시간이 훨씬 적게 들어갔다.
언제는 간단하게 해야 맞고 언제는 빡세게 구현을 해야 맞는다.
이번엔 좀 빡구현해야 맞을거 같았는데
간단한 수식을 쓰는게 좀 더 이득이었다.
하지만 이 문제 역시 조건 맞추고 알맞은 함수로 구현한다는 본질을 벗어나진 않은 느낌이었다.