https://www.acmicpc.net/problem/3273
* 기본개념
1. 목표가 100이고, 20이 현재값이면
visited[80]이 true -> 정답이 가능하다.
* 에러
out of bounds
원인 : visitied[x-v[i]]
해결 : x가 최대 20만 이므로 visited도 20만으로 선언
#include <bits/stdc++.h>
using namespace std;
int n, x, visited[2000004], ret;
vector<int> v;
int main() {
cin >> n;
for (int i = 0; i < n; ++i) {
int temp = 0;
cin >> temp;
v.push_back(temp);
visited[temp] = 1;
}
cin >> x;
for (int i = 0; i < n; ++i) {
if (x < v[i]) continue;
//목표보다 현재값이 큰경우 -> 불가
if (visited[x - v[i]]) { //목표값이 잇으면 ret++
ret++;
//cout << "v[i] : 목표값 " << v[i] << " " << x - v[i]<<endl;
}
else {
//pass
}
}
cout << ret / 2; //(1,3) 과 (3,1)을 중복처리제거.
}
'Algorithm > 배열' 카테고리의 다른 글
백준 1919 cpp // 문자열 차이검사는 +1, -1로 비교하라 (0) | 2023.08.16 |
---|---|
백준 11328 cpp // tc문제는 visit을 초기화하라 , 카운팅 배열 동등비교시 +1 -1하고 값이 0이면 같은배열 (0) | 2023.08.16 |
백준 13300 방배정 cpp // visited배열활용 , 몇 묶음인지 구현하는법 (0) | 2023.08.16 |
백준 10807 개수 세기 // visited 배열이용한 풀이방법 (0) | 2023.08.16 |
백준 1475 cpp // visit 배열활용 (0) | 2023.08.13 |