주어진 배열값 두개를 더해서 lim값이 되는 인덱스 한쌍을 찾아라. [i, j] 라면 i>j 이어야 한다. 모든 가능성의 조합 중에 가장 마지막 조합을 리턴해야함(문제에는 표기가 안됐음)
input: arr = [4, 6, 10, 15, 16], lim = 21
output: [3, 1] # since these are the indices of the
# weights 6 and 15 whose sum equals to 21
hash.find(key) != hash.end()
// key가 존재할때 조건을 만족.
#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
vector<int> getIndicesOfItemWeights( const vector<int>& arr, int limit)
{
unordered_map<int, int> hash;
vector<int> ret;
// make hashtabl
for (int i = 0; i < arr.size(); i++)
hash[arr[i]] = i;
for (int i = 0; i < arr.size(); i++) {
if (hash.find(limit - arr[i]) == hash.end())
continue;
int newidx = hash[limit - arr[i]];
if (i != newidx && arr[i] + arr[newidx] == limit) {
ret.clear();
if (i > newidx) {
ret.push_back(i);
ret.push_back(newidx);
} else {
ret.push_back(newidx);
ret.push_back(i);
}
}
}
return ret;
}
int main() {
return 0;
}