Bleeding edge

2022/09/06 - TIL 본문

ConnecTo

2022/09/06 - TIL

codevil 2022. 9. 6. 17:26

Coding Test


1. 백트래킹

  • 완전탐색과 다르게, 조건에 맞지 않은 경우 가지치기하여 탐색시간을 줄이는 기법
  • 조건이 맞지 않을 경우 제외하기 때문에 완전탐색보다 효율적이다.
  • 조건이 맞지 않은 경우, 이전 과정으로 돌아가야 하기 때문에, 재귀를 자주 사용한다.
  • 조건에 대한 설계를 잘하는 것이 중요하다.

1-1. 백트래킹 과정

  1. 노드의 유망성을 점검
  2. 유망하지 않다면 배제
  3. 배제하기 이전 부모노드로 이동하여 다른 손자 노드 탐색

(배제를 하였다면 불필요한 부분은 다시 돌아가지 않는다)

1-2 백트래킹 문제 특징

  • 주로 재귀 함수로 구현하기에 주어지는 N의 크기가 적다
  • 이전 과정으로 탐색이 필요한 경우
  • 주로 Check 배열을 많이 사용한다.

Todo List


todo list를 만들 때 실수가 많이 나는 부분

  1. map안의 object
setState({
	todos:
		state.todos.map(todo=>{...todo, completed:false})
})
setState({
	todos:
		state.todos.map(todo=>({...todo, completed:false}))
})

위아 아래의 차이는 map에서 받는 콜백함수자리에 object모양으로 들어가는가 아니면 소괄호 안에 object 모양으로 값을 받는가이다. map에서 받는 콜백함수의 경우에는, 블록함수인지 아니면 object를 나타내는 중괄호인지 모호하기 때문에 아래처럼 소괄호를 쳐줘야 문제가 안생긴다.

  1. 변수를 받을 때 확실 하지 않으면 타입변환하기
const removeTodo = (id) =>{
	state.todos = state.todos.filter(todo=>todo.id!==+id)
	render()
}

String인지 Number인지 모호한 경우에는 다음과같이 +id 처럼 +를 붙여주면 타입이 구체적으로 정해진다

  1. Math.max 최소값 정해주기
Math.max(...arr)

다음과 같이 사용되는경우, 빈배열이 나왔을때 최소값이 -infinite가 나오게 된다.

Math.max(...arr, 0)

Math.max에 다음과같이 , 0을 넣어주면 빈 배열이 들어가더라도 값은 0이 반환된다.

'ConnecTo' 카테고리의 다른 글

2022-09-08  (0) 2022.09.08
2022/09/07 - TIL  (0) 2022.09.07
2022/09/05 - TIL  (0) 2022.09.05
2022/09/02 - TIL  (1) 2022.09.02
2022/09/01 - TIL  (0) 2022.09.01