카테고리 없음

자바스크립트 핵심 로직

nh_3521099031483 2024. 3. 11. 17:48

1. 배열 순회

 

2. 문자열에서 공백을 기반으로 분할, 조인

 

 

3. 정렬

 

 

4. 배열에서 짝수 or 홀수만 끄집어내기

 

 

5. 배열에 곱하기해서 반환하기

 

const numb = [1, 2, 3, 4, 5, 6];
const rt = numb.map(e => e * 2) // 제곱을 하고싶으면 e * e
console.log(rt)
let as = []
for(let a of numb){ // for문을 이용해서 곱하기나 제곱 하는 법
    as.push( a * a)
}
console.log(as)
[ 2, 4, 6, 8, 10, 12 ]
[ 1, 4, 9, 16, 25, 36 ]

 

6. 배열을 기반으로 하나의 값을 만들기(배열을 다 더하거나 곱하거나 등등)

 

const numbers = [1,2,3,4,5];
const ret = numbers.reduce((total, e) => total + e, 0) // reduce 함수 이용 0은 토탈의 초기값 100을 넣으면 115반환
console.log(ret)
15

 

7. dfs

 

const graph = {
    1: [2, 3], // 인접 리스트 만들기 1 -> 2, 3 and 2 -> 4 and 3 -> 4, 5
    2: [4],    // 1 -> 2 -> 4 -> 3 -> 5 또는 1 -> 3 -> 5 -> 2 -> 4 탐색하게 만듦
    3: [4, 5],
    4: [],
    5: []
};
const dfs = (here, visited = new Set()) =>{ // visited선언, 매개변수 안집어넣어도 자동으로 설정
    if(visited.has(here)) return // 방문을 했다면 탐색을 하지 않음
    visited.add(here) // 방문처리
    console.log(here)
    graph[here].forEach(e => dfs(e, visited)) // 순회
}
dfs(1);
1
2
4
3
5

 

8. 이진탐색(이분탐색) // 배열이 정렬된 상태에서만 가능한거 아시죠??

 

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){
        console.log(target) // 타겟을 찾으면 리턴
        return "찾았다 요놈";
    }else if(a[mid] > target){ // 타겟보다 중간점이 크면
        hi = mid -1 // 끝점이 중간점 -1로 바뀜
    }else {
        lo = mid + 1 // 그 반대면 시작점이 중간점의 +1로 바뀜
    }
}
}
const ret = bs()
console.log(ret)
3
찾았다 요놈

 

9. 같은 값으로 이루어진 배열 쉽게 만들기

 

let a = Array(50).fill(0)
console.log(a)
[
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0
]

 

let a = Array(5).fill().map( e => Array(5).fill(1))
console.log(a)
// 5 * 5 2차원 배열 만들기
[
  [ 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. 피보나치 ( 피보나치 수(영어: Fibonacci numbers)는 첫째 및 둘째 항이 1이며 그 뒤의 모든 항은 바로 앞 두 항의 합인 수열이다. 처음 여섯 항은 각각 1, 1, 2, 3, 5, 8이다. 편의상 0번째 항을 0으로 두기도 한다.)

 

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)
55

 

11. 배열 스왑

 

const arr = [1,2,3,4,5];
[arr[1], arr[3]] = [arr[3], arr[1]]
console.log(arr)
[ 1, 4, 3, 2, 5 ]

 

 

느낀점 : 파이썬으로 코딩테스트를 준비했었다. 웹 개발쪽이나 풀스텍, 특히 프론트엔드를 희망하는 나로써는 자바스크립트 실력을 더 키우고 알아야 한다. 그래서 자바스크립트로 코딩테스트를 하려고 한다 개인적으로 파이썬에 비해 어렵다. 익숙치 않아서 그렇게 느끼는 것 일수도 있다. 자바스크립트 재밌다. 고수가 되고싶다.