23.10.02
DAY8, DAY9는 추석 연휴로 숫자가 사라졌다 (?)
📚 오늘 공부한 것
백트래킹 구현엔 DFS나 BFS를 이용한다. DFS의 경우 웬만하면 스택을 이용하여 구현하는 것이 좋고, 탐색에서 순환이 발생할 수 있다면 BFS 구현이 효율적이다.
자바스크립트에서 빈 배열 선언 및 초기화 하는 방법을 정리해보자!
const arr = [];
const arr = [1,2,3];
const arr = new Array(5);
// 각 요소는 undefind 를 가진다.
const arr = new Array(0, 0, 0, 0, 0); //Array(5) [0, 0, 0, 0, 0]
const arr = Array.from('foo');
// Array ["f", "o", "o"]
const arr = Array.from({ length: 4 }, () => 2)
// [2,2,2,2]
const arr = Array.from([1, 2, 3], (x) => x + x);
//Array [2, 4, 6]
해결한 작은 문제로 큰 문제를 해결하는 문제 풀이 방식 (알고리즘은 아님)
메모리를 많이 사용하지만 성능이 빠르다.
코딩테스트에선 메모이제이션 방법론을 많이 사용한다.
DP로 구현하기전에 고려해야하는것!!
1) 가장 작은 문제를 정의할 수 있는지
2)작은 문제를 통해 큰 문제를 해결할 수 있는 규칙이 있는지
`return dp[dp.length - 1] === Infinity ? -1 : dp[dp.length - 1];`
파이썬에서
return ‘a’ if 1==1 else ‘b’
이렇게 리턴에 조건문 바로 쓰는거, 자스에선 삼항연산자 이용하자 !!!
실습 문제의 난이도가 Lv3, Lv4 여서 온전히 혼자 성공해내기 어려웠다.
특히 N-Queen의 경우 조합으로 경우의 수를 추린 후에 백트래킹을 하고 싶었는데 파이썬처럼 combinations이 내장 모듈에 없기에,, 다른 방안을 떠올리는 것이 더뎠다. 파이썬의 극강 효율의 맛을 알아버린건가 . . .
단어퍼즐 실습 문제에선 테스트케이스와 효율성 케이스에서 두개씩 삐끗했다. 테스트케이스가 실패여서 수정하면 효율성이 실패고.. 무한 반복 ㅜ 강사님의 풀이방법으로 구현해서 성공했지만, 나의 실패한 코드의 실패원인을 찾지 못했다. 내일 스크럼에서 바로 SOS할 예정. 그리고 더 좋은 코드를 찾아보기 위해 구글링 하던 중 Js의 내장 함수를 효율적으로 사용해서 시간 효율도 엄청 좋았던 코드를 발견하고 감탄했다.
과제를 미리미리 해둬서 다른 분들의 코드와 비교하면서 스스로 피드백 받고 개선할 수 있었다! 굿! 강의든 과제든 밀리지 말자
배열 초기화 방법도 우물쭈물하다니 . . . MDN 뿌수기를 해야겠다
오늘 실습 문제는 며칠 뒤에 완전히 다시 풀기를 시도해야 한다.