문제링크 : https://leetcode.com/problems/two-sum/description/
최초에는 단순하게 이중루프로 풀었다.
var twoSum = function(nums, target) {
const result = [];
for(let i = 0; i < nums.length - 1; i++){
for(let j = i + 1; j < nums.length; j++){
if(nums[i] + nums[j] === target){
result.push(i);
result.push(j);
break;
}
}
}
return result;
};
통과는 하였는데
문제 맨 하단에 다음과 같은 문구가 있었다.
js의 Map을 용하여 코드를 개선해 보았다. js의 Map객체는 해시 테이블을 기반으로 하여 평균적으로 상수 시간 복잡도 O(1)에서 요소에 접근, 삽입, 삭제, 확인 등의 작업을 수행할 수 있다. (작업이 독립적으로 빠르게 수행될 수 있다는 것을 의미) 따라서 이중루프를 이용한 풀이보다 실행속도를 개선시킬 수 있었다.
//js 해시테이블일 이용해서 성능 개선
var twoSum2 = function(nums, target) {
let map = new Map();
for (let i = 0; i < nums.length; i++) {
let gap = nums[i] - target;
if (map.has(gap)) {
return [map.get(gap), i];
}
map.set(nums[i], i);
}
return [];
};
만족스러운 실행속도가 나왔다.
'코테' 카테고리의 다른 글
LeetCode) product-of-array-except-self (0) | 2024.08.14 |
---|---|
LeetCode) best-time-to-buy-and-sell-stock (0) | 2024.08.13 |
프로그래머스) 숫자 게임 (js) (0) | 2024.07.26 |
프로그래머스) 야근지수 (js) (0) | 2024.07.05 |
프로그래머스) 이중우선순위큐 (js) (0) | 2024.07.03 |