배열과 정수 값이 주어질 때, 배열 내 두 값을 합하여 정수 값을 만들 수 있도록 두개의 index를 반환하는 함수를 작성하시오. 각 입력에 정확히 하나의 솔루션이 있다고 가정하고, 동일한 요소를 두번 사용하지 않는다. 배열의 index는 오름차순으로 정렬하여 반환한다.
let input5 = [
[[2, 7, 11, 15], 9],
[[3, 2, 4], 6],
[[3, 3], 6],
];
function answer(nums, target){
for(let i = 0; i < nums.length; i++){
for(let j = i + 1; j < nums.length; j++){
if(nums[i] + nums[j] == target){
return [i, j];
}
}
}
}
map이라는 빈 객체를 만들고 value의 유/무를 찾아서 없다면 [현재 인덱스에 해당하는 수, 현재 인덱스]를 map에 추가, 있다면 [해당하는 value, 현재 인덱스]를 반환한다.
function answer(nums, target){
let map = {}; // key, value
for(let i = 0; i < nums.length; i++){
if(map[target - nums[i]] == undefined) {
map[nums[i]] = i;
} else {
return [ map[target - nums[i]], i ];
}
}
}
- if(map[ target - nums[ i ] ] == undefined) -> value 유무 찾기
- map[ nums[ i ] ] = i -> key : value로 저장
- map[ target - nums[ i ] ] -> value반환