Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- Baekjoon
- 리액트쿼리
- 알고리즘문제풀이
- leetcode
- 리액트
- 자바스크립트 연결리스트
- 프론트엔드
- 자바스크립트 알고리즘
- JS
- leetcode문제풀이
- next13
- JavaScript
- lodash
- 타입스크립트
- 자바스크립트 문제
- HTML
- CSS
- Next
- til
- 제로베이스
- react
- 자바스크립트 문제풀이
- Next.js13
- 자바스크립트 문제 풀이
- 자바스크립트코딩테스트
- NPM
- 프로그래머스
- 자바스크립트
- stack문제
- 자바스크립트 알고리즘 문제
Archives
- Today
- Total
코드노트
자바스크립트 배열 문제 풀이 - 배열 내 두 값 == 합 본문
ex ) [ 2, 7, 11, 15 ], 13]
2, 7, 11, 15 의 배열 중에서 2개를 더하여 13이 나오는 값의 인덱스를 반환해야하는 문제이다.
이러한 문제는 풀어본적이 있어서 그렇게 어렵지 않았다.
1. 이중for문을 통해서 13이 되는 값들을 찾기만 하면 되는 문제였다.
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];
}
}
}
- 이렇게 이중 for문을 통해서 작성하게 되면 시간적합도는 O(n^2)이다.
- for문 하나로는 어떻게 풀어야할까?
- map을 이용해서 하는 방법
let nums = [ 2, 7, 11, 15 ]
let target = [ 13 ]
let map = {}; // key, velue
for (let i = 0; i < nums.length; i++) {
if (map[target - nums[i]] != undefined) {
return [map[target - nums[i]], i];
}
map[nums[i]] = i;
}
- map을 이용해서 하는 방법
- map[target - num[ i ] != undfind)
0 : target(13) - nums[ 0 ]( 2 ) != undefind / 가 맞으므로 map[ nums [ 0 ]( 2 )] = i (0) 을 넣어준다. { 2 : 0 }
1 : target(13) - nums[ 1 ]( 7 ) != undefind / 가 맞으므로 map[ nums [ 7 ]( 2 )] = i (1) 을 넣어준다. { 7 : 1 }
현재map 에는 2와 7이 있다. { 2: 0, 7 : 1 }
2 : target(13) - nums[ 2 ]( 11 ) != undefind / 가 아니다.
13에서 11을 뺀 값인 2가 map 에 있으므로 11, 2 로 target에 만족하는 두 인덱스 값인 0, 2 가 출력 된다.
'Code note > 자바스크립트 알고리즘 문제풀이' 카테고리의 다른 글
자바스크립트 배열 문제 풀이 - 높이 맞추기 / 배열 평균에 맞추기 (0) | 2022.08.23 |
---|---|
자바스크립트 배열 문제 풀이 - 문제점수 채점, 가산점 계산 (0) | 2022.08.23 |
자바스크립트 배열 문제 풀이 - 나무 만들기 (0) | 2022.08.23 |
자바스크립트 배열 문제 풀이 - 배열 중 높은값 2개 찾기 (0) | 2022.08.23 |
자바스크립트 배열 문제 풀이 - 배열의 정해진 합을 만족하는 요소 (0) | 2022.08.23 |