-
[BaekJoon] 2295λ² μΈ μμ ν©SW Test/BaekJoon 2021. 8. 22. 21:41λ°μν
- μ΄ κΈμ C++λ‘ νμ΄λ₯Ό μμ±νμμ΅λλ€.
λ¬Έμ
μμ
νμ΄
- μ΄ λ¬Έμ λ₯Ό 3μ€ forλ¬Έμ μ¬μ©νλ©΄ ν©μ ꡬνκ³ ν©μ΄ μ‘΄μ¬νλμ§ νλ¨νμ¬ μκ°λ³΅μ‘λκ° O(N4)μ΄κΈ° λλ¬Έμ μκ°μ΄κ³Όκ° λ°μνκ² λ©λλ€.
- λ§μ§λ§ ν©μ΄ μ‘΄μ¬νλμ§λ₯Ό μ΄λΆνμμ μ¬μ©νλλΌλ μκ°λ³΅μ‘λκ° O(N3logN)μ΄λΌμ μκ°μ΄κ³Όκ° λΆκ°νΌν©λλ€.
- λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄μλ μ΄λΆνμμ μ¬μ©νλ, μλ‘μ΄ κΈ°λ²μ νμ©ν΄μΌ ν©λλ€. μ¦ 2κ°μ μ«μμ ν©μ νλμ λ°°μ΄μ λ§λλλ€. μ΄ λμ μκ°λ³΅μ‘λλ O(N2)μ λλ€. μ΄ν μ²μ λ°°μ΄μ λ κ°μ μ°¨μ΄κ° 2κ°μ μ«μμ ν© λ°°μ΄μ μ‘΄μ¬νλμ§ νμΈνλ©΄ λ©λλ€. O(N2logN)μΌλ‘ ν΄κ²°ν μ μμ΅λλ€.
- ex) a1+a2+a3 = a4 ->, a4 - a3 = a1+a2
#include<iostream> #include<vector> #include<algorithm> using namespace std; int main(){ int num; cin>>num;; int arr[1005]; vector<int> two; for(int i=0;i<num;i++){ cin>>arr[i]; } sort(arr, arr+num); for(int i=0;i<num;i++){ for(int j=i;j<num;j++){ two.push_back(arr[i] + arr[j]); } } sort(two.begin(), two.end()); int result = 0; for(int i=0;i<num;i++){ for(int j=i+1;j<num;j++){ if(binary_search(two.begin(), two.end(), arr[j]-arr[i])){ result = max(result, arr[j]); } } } cout<<result; }
λ°μν'SW Test > BaekJoon' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BaekJoon] 1654λ² λμ μλ₯΄κΈ° (0) 2021.08.22 [BaekJoon] 18870λ² μ’νμμΆ (0) 2021.08.22 [BaekJoon] 2230λ² μκ³ λ₯΄κΈ° (0) 2021.08.22 [BaekJoon] 1806λ² λΆλΆν© (0) 2021.08.22 [BeakJoon] 5430λ²: AC (0) 2021.07.22