‘큰돌의터전’님의 ‘자바스크립트로 코딩테스트 보기전 봐야할 핵심로직 12가지’ 유튜브 영상을 보고 정리한 글입니다. 자세한 내용은 해당 유튜브 영상에 나와있으니 참고 부탁드립니다!
유튜브 링크: https://www.youtube.com/watch?v=MlvZ2IufTFI
1. 배열 순회
a = [1, 3, 45, 2, 10]
a.forEach((e, i) => {
console.log(e,i)
})
// 결과
// element와 index가 출력된다.
// 1 0
// 3 1
// 45 2
// 2 3
// 10 4
2. 문자열 분할
const str = "Hello World";
const ret = str.split(" ")
console.log(ret)
// 결과 (공백을 기준으로 분할)
// [ 'Hello', 'World' ]
const a = ret.join('')
console.log(a)
// 결과 (배열을 문자열로 만들어줌)
// HelloWorld
// 배열을 합칠 때 사이에 무언가를 넣고싶다면
// join에 입력하면 그 사이에 들어간다
// 저 위에는 ''를 넣었으므로 아무것도 안들어갔다.
3. 정렬
let numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 4, 5]
numbers = numbers.sort((a, b) => a - b)
console.log(numbers)
// 내림차순을 하고 싶으면 아래와 같이 바꾸자
// numbers = numbers.sort((a, b) => (a - b) * -1)
4. 배열에서 특정 조건을 만족하는 요소만 꺼내고 싶으면
const numbers = [1,2,3,4,5,6];
const ret = numbers.filter(e => e % 2 == 0 )
console.log(ret)
// 결과 : 짝수만 필터링 배열 반환
// [2, 4, 6]
5. 배열의 요소들에 2를 곱해서 반환하고 싶다면
const numbers = [1, 2, 3, 4, 5];
const ret = numbers.map(e => e * 2)
console.log(ret)
// 결과
// [2, 4, 6, 8, 10[
6. 배열의 요소들의 합을 알고 싶다면
const numbers = [1, 2, 3, 4, 5];
const ret = numebrs.reduce((total, e) => total + e, 0)
console.log(ret)
// 결과: 15
7. DFS를 구현하고 싶다면
const graph = {
1: [2, 3],
2: [4],
3: [4, 5],
4: []
5: []
};
const dfs = (here, visited = new Set()) => {
if(visited.has(here)) return
visited.add(here)
console.log(here)
graph[here].forEach(e => dfs(e, visited))
}
dfs(1);
8. 이분탐색을 하고 싶다면
정렬된 배열에서 O(log N)만에 탐색 가능
const a = [1, 2, 3, 4, 5, 6, 7, 8]
const bs = () => {
let lo = 0;
let hi = a.length - 1;
const target = 3;
while(lo <= hi) {
let mid = Math.floor((lo + hi) / 2)
if(a[mid] === target) {
return "찾았다!!"
} else if (a[mid] > target) {
hi = mid - 1
} else {
lo = mid + 1
}
}
return -1;
}
const ret = bs()
console.log(ret)
// 결과: 찾았다!!
9. 자바스크립트로 배열을 생성할 때
// 50개짜리 0이 있는 배열을 생성하고 싶을 때
let a = Array(50).fill(0)
console.log(a)
// 결과
// [
// 0, 0, 0, 0, 0, 0, .....
// ....
// .... , 0
// ]
// 1이 있는 5x5 2차원 배열을 만들고 싶을 때
let b = Array(5).fill().map(e => Array(5).fill(1))
console.log(b)
// 결과
// [
// [ 1, 1, 1, 1, 1 ],
// [ 1, 1, 1, 1, 1 ],
// [ 1, 1, 1, 1, 1 ],
// [ 1, 1, 1, 1, 1 ],
// [ 1, 1, 1, 1, 1 ]
// ]
10. 피보나치 배열을 DP를 사용해서 구현해보자면
const fibo = (idx, memo = {} ) => {
if (idx <= 2) return 1
if (idx in memo) return memo[idx]
memo[idx] = fibo(idx - 1, memo) + fibo(idx - 2, memo)
return memo[idx]
}
const ret = fibo(10)
console.log(ret)
memo는 계산한 결과를 저장해두는 객체 (처음에는 비어있음)
11. 배열의 요소들을 swap하고 싶다면
const arr = [1, 2, 3, 4, 5];
[arr[1], arr[3]] = [arr[3], arr[1]]
console.log(arr);
구조 분해 할당을 활용하여 간단하게 배열 내 요소들을 swap할 수 있다.
'Frontend > Javascript' 카테고리의 다른 글
[Javascript] 코딩앙마의 자바스크립트 중급 강좌를 듣고 (0) | 2023.07.18 |
---|---|
[Javascript] 코딩앙마의 자바스크립트 기초 강좌를 듣고 (0) | 2023.07.12 |