https://www.acmicpc.net/problem/3273
λ¬Έμ
nκ°μ μλ‘ λ€λ₯Έ μμ μ μ a1, a2, ..., anμΌλ‘ μ΄λ£¨μ΄μ§ μμ΄μ΄ μλ€. aiμ κ°μ 1λ³΄λ€ ν¬κ±°λ κ°κ³ , 1000000λ³΄λ€ μκ±°λ κ°μ μμ°μμ΄λ€. μμ°μ xκ° μ£Όμ΄μ‘μ λ, ai + aj = x (1 ≤ i < j ≤ n)μ λ§μ‘±νλ (ai, aj)μμ μλ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μ μμ΄μ ν¬κΈ° nμ΄ μ£Όμ΄μ§λ€. λ€μ μ€μλ μμ΄μ ν¬ν¨λλ μκ° μ£Όμ΄μ§λ€. μ μ§Έ μ€μλ xκ° μ£Όμ΄μ§λ€. (1 ≤ n ≤ 100000, 1 ≤ x ≤ 2000000)
μΆλ ₯
λ¬Έμ μ 쑰건μ λ§μ‘±νλ μμ κ°μλ₯Ό μΆλ ₯νλ€.
νμ΄1 - μκ° μ΄κ³Ό
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n,x,ans=0;
vector <int> v;
cin >> n;
for(int i=0, tmp; i<n; i++){
cin >> tmp;
v.push_back(tmp);
}
cin >> x;
for(int i=0; i<n; i++){
int tmp = x - v[i];
for(int i=0; i<n; i++){
if(tmp == v[i]) {
ans++;
break;
}
}
}
cout << ans/2; //μ€λ³΅μ κ±°
return 0;
}
λ΅μ λ§κ² λμ€λ κ² κ°μλ° λ²‘ν°λ₯Ό μ΄μ€μΌλ‘ λμμΌν΄μ μκ°λ³΅μ‘λκ° λΆμλΆμνκΈ΄ νλ€...
μμ.. μμ£Ό νλ €νκ² μκ°μ΄κ³Ό
νμ΄2 - λ°νμμλ¬
μν΄.. κ·Έλμ forλ¬Έ(μκ°λ³΅μ‘λ O(n))μ΄ μλ κ·Έλ₯ λ°λ‘ (O(1)) x-μμ λΌλ μ«μκ° μλμ§ νλ¨ν μ μλλ‘ μ«μ μ¬λΆλ₯Ό νλ¨νλ bool λ°°μ΄μ λ§λ€μ΄μ€¬λ€.
μ²μμλ int λ‘ νλλ° μκΎΈ OutOfBounds κ° λ μ μ μλ°°μ΄μ 1000000 μ΅λμΈκ±°λλ¬ΈμΈκ° μΆμ΄ μ΄μ¬ν λ°κΎΈκ³ μ½μ§ν¨..
#include <iostream>
#include <vector>
using namespace std;
bool a[1000001];
int main() {
int n,x,ans=0;
vector <int> v;
cin >> n;
for(int i=0, tmp; i<n; i++){
cin >> tmp;
a[tmp] = true;
v.push_back(tmp);
}
cin >> x;
for(int i=0; i<n; i++){
int tmp = x - v[i];
if (a[tmp])
ans++;
}
cout << ans/2; //μ€λ³΅μ κ±°
return 0;
}
μ κ·Όλ° μκ³ λ³΄λ μ ν λ€λ₯Έκ³³μμ λ¬Έμ κ° μκΈ΄κ±°μλ€
νμ΄3 - μ±κ³΅
μ μ½λλ κ·Έλλ‘ μ°κ³ μ€κ°μ x-μμ μΈ tmp λ₯Ό λ°°μ΄μ λ£μ΄μ μ²λ¦¬νκΈ° μ νν°λ§μ νλ€
보면 μμλ 1~1000000 μ΄κ³
xλ 1~2000000μ΄λ€
κ·Έλ¬λκΉ.. xμμ μμλ₯Ό λΉΌλ©΄ 2000000-1 ~ 1-1000000 μ΄λ κ² νλν λ²μκ° μκΈ΄λ€
μμλ μκ³ λ°°μ΄ν¬κΈ° λμ΄μλ μ λ μμΌλ λ°νμμλ¬κ° 7νλ‘λΆν° λλκ±°μλ€.. μμ£Ό μΌμ νκ²..
μ²μμλ μμλ§ μμΈμ²λ¦¬νλλ° μ½μ§λμ 1000000μ΄νμ tmpλ μ²λ¦¬ν΄μ€
#include <iostream>
#include <vector>
using namespace std;
bool a[1000001];
int main() {
int n,x,ans=0;
vector <int> v;
cin >> n;
for(int i=0, tmp; i<n; i++){
cin >> tmp;
a[tmp] = true;
v.push_back(tmp);
}
cin >> x;
for(int i=0; i<n; i++){
int tmp = x - v[i];
if (tmp > 0 && tmp < 1000001 && a[tmp]) //μ¬κΈ° 쑰건μ λκ° μΆκ°νλ€
ans++;
}
cout << ans/2; //μ€λ³΅μ κ±°
return 0;
}
TIL
λ¬Έμ λ₯Ό μ μ½μ ^^
'π Baaaaaarking > 0x03κ° - λ°°μ΄' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ][C++] λ°±μ€ 1919λ²: μ λκ·Έλ¨ λ§λ€κΈ° (0) | 2023.05.02 |
---|---|
[BOJ][C++] λ°±μ€ 113289λ²: Strfry (0) | 2023.04.28 |
[BOJ][C++] λ°±μ€ 13300λ²: λ°© λ°°μ (0) | 2023.04.27 |
[BOJ][C++] λ°±μ€ 1475λ² : λ°© λ²νΈ (0) | 2021.12.22 |
[BOJ][C++] λ°±μ€ 10808λ² : μνλ²³ κ°μ (0) | 2021.12.22 |