TIL-220329

·2022년 3월 29일
0

데브코스-TIL

목록 보기
3/8

🎈오늘의 공부

알고리즘

백트래킹 이란

모든 경우의 수를 탐색하는 알고리즘
! 재귀는 사용하지말자- js에서 재귀는 효울이 안좋다 왜지?
dfs를 구현할 경우 재귀로
하지만 순환이 발생하면 bfs로

❗ 백트래킹의 핵심은핵심은 가지치기

백트래킹 작성 팁

  • 모든경우의 수 탐색
    -이후 특정 조건시만 탐색하고 나머지는 탈출
  • 절대로 답이 될수업거나 도달할수없으면 종료

동적계획법

동적계획법은 dp즉 다이나믹프로그래밍 이라고도 불린다
왜 다이나믹인가? 그냥 알고리즘 만든사람이 멋있어서 지었다고 한다.

동적계획법의 핵심

  1. 메모이제이션
    1. 하향식 접근법, 보통 재귀로 푼다.
    2. 상위 문제를 하위문제로 분리해서 푼다.
  2. 타뷸레이션
    1. 상향식 접근법.
    2. 필요한값을 미리 계산해두는것 ↔메모이제이션은 필요할떄 계산하는것

어떻게 동적계획법을 접근할까?

  1. 가장 작은문제를 정의가능한가
  2. 작은 문제를 통해서 큰문제를 해결할 규칙이 존재하는가? - 점화식

함수형 공부

map - 이터러블한 값을 순회 하면서 각 요소에 대해서
map에게 인자로 넘겨준 함수를 실행해준다.

filter -이터러블한 값을 순회 하면서 특정 조건에 만족하는
값만 뽑아서 리턴한다

reduce- 이터러블한 값을 순회하면서 값을 더하거나 등등 전달된 보조함수를 사용하여서 값을 축약한다.

코드를 값으로 다루는 함수

go- 값과 함수를 축약해서 결과를 보여주는 함수다.

const go = (...func) => {
  return reduce((a, f) => f(a), func);
};

go(
  0,
  (a) => a + 1,
  (a) => a + 10,
  console.log
);

pipe- 여러개의 함수를 축약해서 하나의 함수로 만들어주는 함수

const pipe =(...func) =>(a) =>go(a, ...func);

위의 코드로 만들수있다.
저게 아마 커링와 클로져 개념으로 가능한것 같다.
신기..

🤔 공부할점

함수형을 어떻게 활용할지 생각해보자

오늘의 문제

n퀸문제
https://programmers.co.kr/learn/courses/30/lessons/12952

단어퍼즐
https://programmers.co.kr/learn/courses/30/lessons/12983

0개의 댓글