반응형
map을 이용해 푼 문제였습니다.
풀이방법
1. map에 key는 a의 원소, value는 존재여부(0은 없음,1은 있음)으로 해 저장합니다.
2. (x - map.first, map.first) 가 모두 1이라면 한 쌍이 만들어지므로 답 변수 ans++해줍니다.
3. 중복해서 더해졌으므로 ans/2를 출력합니다.
Code
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll n, ans, x;
map<ll,ll> m;
int main(){
cin >> n;
while(n--){
ll x;
cin >> x;
m[x] = 1;
}
cin >> x;
for(auto &el : m)
if(m[x - el.first] && m[el.first]) ans++;
cout << ans/2 << '\n';
}
'Algorithm > 자료구조' 카테고리의 다른 글
(C++) - 백준(BOJ) 7785번 : 회사에 있는 사람 (0) | 2021.07.06 |
---|---|
(C++) - 백준(BOJ) 1655번 : 가운데를 말해요 (0) | 2021.05.17 |
(C++) - 백준(BOJ) 11652번 : 카드 답 (0) | 2021.05.01 |
(C++) - 백준(BOJ) 17298번 : 오큰수 답 (0) | 2021.05.01 |
(C++) - 프로그래머스(월간 코드 챌린지 시즌2) : 괄호 회전하기 (0) | 2021.04.21 |