https://www.acmicpc.net/problem/2467
λ¬Έμ
KOI λΆμ€ κ³Όνμ°κ΅¬μμμλ λ§μ μ’ λ₯μ μ°μ± μ©μ‘κ³Ό μμΉΌλ¦¬μ± μ©μ‘μ 보μ νκ³ μλ€. κ° μ©μ‘μλ κ·Έ μ©μ‘μ νΉμ±μ λνλ΄λ νλμ μ μκ° μ£Όμ΄μ Έμλ€. μ°μ± μ©μ‘μ νΉμ±κ°μ 1λΆν° 1,000,000,000κΉμ§μ μμ μ μλ‘ λνλ΄κ³ , μμΉΌλ¦¬μ± μ©μ‘μ νΉμ±κ°μ -1λΆν° -1,000,000,000κΉμ§μ μμ μ μλ‘ λνλΈλ€.
κ°μ μμ λ μ©μ‘μ νΌν©ν μ©μ‘μ νΉμ±κ°μ νΌν©μ μ¬μ©λ κ° μ©μ‘μ νΉμ±κ°μ ν©μΌλ‘ μ μνλ€. μ΄ μ°κ΅¬μμμλ κ°μ μμ λ μ©μ‘μ νΌν©νμ¬ νΉμ±κ°μ΄ 0μ κ°μ₯ κ°κΉμ΄ μ©μ‘μ λ§λ€λ €κ³ νλ€.
μλ₯Ό λ€μ΄, μ£Όμ΄μ§ μ©μ‘λ€μ νΉμ±κ°μ΄ [-99, -2, -1, 4, 98]μΈ κ²½μ°μλ νΉμ±κ°μ΄ -99μΈ μ©μ‘κ³Ό νΉμ±κ°μ΄ 98μΈ μ©μ‘μ νΌν©νλ©΄ νΉμ±κ°μ΄ -1μΈ μ©μ‘μ λ§λ€ μ μκ³ , μ΄ μ©μ‘μ νΉμ±κ°μ΄ 0μ κ°μ₯ κ°κΉμ΄ μ©μ‘μ΄λ€. μ°Έκ³ λ‘, λ μ’ λ₯μ μμΉΌλ¦¬μ± μ©μ‘λ§μΌλ‘λ νΉμ λ μ’ λ₯μ μ°μ± μ©μ‘λ§μΌλ‘ νΉμ±κ°μ΄ 0μ κ°μ₯ κ°κΉμ΄ νΌν© μ©μ‘μ λ§λλ κ²½μ°λ μ‘΄μ¬ν μ μλ€.
μ°μ± μ©μ‘κ³Ό μμΉΌλ¦¬μ± μ©μ‘μ νΉμ±κ°μ΄ μ λ ¬λ μμλ‘ μ£Όμ΄μ‘μ λ, μ΄ μ€ λ κ°μ μλ‘ λ€λ₯Έ μ©μ‘μ νΌν©νμ¬ νΉμ±κ°μ΄ 0μ κ°μ₯ κ°κΉμ΄ μ©μ‘μ λ§λ€μ΄λ΄λ λ μ©μ‘μ μ°Ύλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μλ μ 체 μ©μ‘μ μ Nμ΄ μ λ ₯λλ€. Nμ 2 μ΄μ 100,000 μ΄νμ μ μμ΄λ€. λμ§Έ μ€μλ μ©μ‘μ νΉμ±κ°μ λνλ΄λ Nκ°μ μ μκ° λΉμΉΈμ μ¬μ΄μ λκ³ μ€λ¦μ°¨μμΌλ‘ μ λ ₯λλ©°, μ΄ μλ€μ λͺ¨λ -1,000,000,000 μ΄μ 1,000,000,000 μ΄νμ΄λ€. Nκ°μ μ©μ‘λ€μ νΉμ±κ°μ λͺ¨λ μλ‘ λ€λ₯΄κ³ , μ°μ± μ©μ‘λ§μΌλ‘λ μμΉΌλ¦¬μ± μ©μ‘λ§μΌλ‘ μ λ ₯μ΄ μ£Όμ΄μ§λ κ²½μ°λ μμ μ μλ€.
μΆλ ₯
첫째 μ€μ νΉμ±κ°μ΄ 0μ κ°μ₯ κ°κΉμ΄ μ©μ‘μ λ§λ€μ΄λ΄λ λ μ©μ‘μ νΉμ±κ°μ μΆλ ₯νλ€. μΆλ ₯ν΄μΌ νλ λ μ©μ‘μ νΉμ±κ°μ μ€λ¦μ°¨μμΌλ‘ μΆλ ₯νλ€. νΉμ±κ°μ΄ 0μ κ°μ₯ κ°κΉμ΄ μ©μ‘μ λ§λ€μ΄λ΄λ κ²½μ°κ° λ κ° μ΄μμΌ κ²½μ°μλ κ·Έ μ€ μ무κ²μ΄λ νλλ₯Ό μΆλ ₯νλ€.
νμ΄
μ λκ° ν¨μ κΈ°μ΅ μλμ κ·Έλ₯ ꡬνν΄μ μΌλ€.
leftμ right μΈλ±μ€ λκ°λ₯Ό μ§μ ν΄μ λ§μ‘±νλ μμ μ°Ύλ λ¬Έμ μ΄λ―λ‘ ν¬ν¬μΈν°
// νμ΄ : https://whkakrkr.tistory.com
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int getAbs(int num) {
if(num<0) {
return num*-1;
}
return num;
}
int main() {
int n;
cin >> n;
vector<int>v(n);
for(int i=0; i<n; i++) {
cin >> v[i];
}
int left=0, right=n-1;
int cur = v[left] + v[right];
pair<int, int> ans = {left, right};
while(left<right) {
int sum = v[left] + v[right];
if(getAbs(sum) < getAbs(cur)) {
cur = sum;
ans = {left, right};
}
if(sum<0) {
left++;
} else {
right--;
}
}
cout << v[ans.first] << " " << v[ans.second];
return 0;
}
'ποΈ ICPC Sinchon > Two Pointer' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ][C++] λ°±μ€ 1806λ²: λΆλΆν© (0) | 2024.08.28 |
---|---|
[BOJ][C++] λ°±μ€ 7795λ²: λ¨Ήμ κ²μΈκ° λ¨Ήν κ²μΈκ° (0) | 2024.08.19 |
[BOJ][C++] λ°±μ€ 2003λ²: μλ€μ ν© 2 (0) | 2023.07.27 |
[BOJ S1][C++] λ°±μ€ 2531λ²: νμ μ΄λ°₯ (0) | 2022.10.20 |
λ°±μ€ 10025λ²: κ²μΌλ₯Έ λ°±κ³° (0) | 2022.10.18 |