티스토리 뷰
728x90
문제 링크
풀이
1) 각 수의 개수를 세줍니다.
2) 수 $i$마다, ($i$의 개수) * ($x - i$의 개수)를 정답에 더해줍니다.
3) 경우의 수가 두 번씩 중복되었으므로 정답을 2로 나눠준 뒤 출력합시다.
정답 코드
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll n, x;
map<int, int> p;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n;
for (int i = 0; i < n; i++) {
int c;
cin >> c;
p[c]++;
}
cin >> x;
int ans = 0;
for (auto now: p) {
auto[i, cnt] = now;
if (p[x - i]) {
ans += cnt * p[x - i];
}
}
cout << ans / 2;
}
728x90
'알고리즘 > 문제 풀이' 카테고리의 다른 글
[BOJ] 백준 10830 - 행렬 제곱 (0) | 2021.04.08 |
---|---|
[BOJ] 백준 2824 - 최대공약수 (0) | 2021.04.07 |
[BOJ] 백준 11693 - n^m의 약수의 합 (0) | 2021.04.07 |
[BOJ] 백준 1629 - 곱셈 (0) | 2021.04.07 |
[BOJ] 백준 8111 - 0과 1 (0) | 2021.04.07 |
댓글