728x90
9주 4일차 - 재귀, dp
1. 배운 것
- 데일리코딩 1번
- 내장함수 sort 사용하여 오름차순/내림차순 정렬하기
- Math.max()
- 코플릿 재귀
- 재귀로 배열 관련 문제에서 head, tail 활용
- arr.slice(1) : 맨 앞 요소 하나 빠진 나머지를 리턴.
- Object.keys(obj).length === 0 이면 빈 객체.
- dp - 별도 포스팅으로 정리.
2. 내용 정리
데일리코딩 1번
브루트 포스 방법으로 푸신 분들도 있었다. 아직 안배워서 난 모름
- 오름차순으로 기존 배열 정렬.
- 3개의 요소를 곱해야 하므로 오름차순 정렬 시 왼쪽 끝에서부터는 음수 쪽 최댓값, 오른쪽 끝에서 역순으로는 양수 쪽 최댓값 이므로 양수 쪽 최댓값은 오른쪽 끝부터 3개를 곱하고 음수 쪽 최댓값은 왼쪽끝부터 2개 곱하고 양수 쪽 최댓값을 곱함.
- Math.max()
const largestProductOfThree = function (arr) {
// 정렬된 배열을 담는 변수 선언 : sort로 오름차순 정렬한 값으로 초기화
// 변수 1 - 양수 쪽 최댓값 3개(length에서 -1, -2, -3)
// 변수 2 - 음수 쪽 최댓값 2개, 양수 쪽 최댓값 1개(length에서 -1, 0, -1)
// Math.max(num1, num2, ...) : 인수 중 최댓값을 반환하는 메서드
const sorted = arr.sort((a,b) => a - b);
const len = sorted.length;
const right = sorted[len - 1] * sorted[len - 2] * sorted[len - 3];
const left = sorted[len - 1] * sorted[0] * sorted[1];
return Math.max(right, left);
};
내장 메서드 sort로 1차원 배열의 숫자 요소 정렬하는 방법:
- 오름차순: arr.sort((a,b) ⇒ a - b);
- 내림차순: arr.sort((a,b) ⇒ a + b);
재귀
- 재귀 문제 풀이 순서
- 1. 문제를 좀 더 작게 쪼갭니다. → 중복되는 하위 문제들로 나눔.
- 2. 1번과 같은 방식으로, 문제가 더는 작아지지 않을 때까지, 가장 작은 단위로 문제를 쪼갭니다.
- base case : if문의 탈출조건이 가장 작은 단위의 문제의 결과를 리턴.
- recursive case : 재귀 호출단계에서 호출시마다값이 변화하도록 코드를 만들어야 함.
- 3. 가장 작은 단위의 문제를 풂으로써 전체 문제를 해결합니다. → 콜 스택에 쌓인 재귀 호출이 후입선출로 빠지면서 마지막에 결과를 반환.
참고 자료
- 유어클래스 컨텐츠
3. 리뷰
3.1 좋았던 점
- 실력이 늘긴 늘었다.
- 집중도가 떨어질 때 마다 과목을 바꿔서 공부하는 방법이 나한테 잘 맞았다.
3.2 아쉬웠던 점
- dp가 너무 어렵다.
3.3 notes
서버쪽 일부 내용들은 제외하더라도 섹션 1, 2에서 다룬 자바스크립트 기초 지식과 css flex로 화면 구현능력, 리액트 훅 사용법은 이제부터의 커리큘럼에서는 이미 다룰 줄 안다라고 가정하고 섹션 3가 진행되기 때문에 기초적인 정렬알고리즘들과 디스트럭쳐링, rest 문법, 그리고 리액트 복습이 반드시 필요하다.
다시 리액트로 돌아가기 전 이번주 주말에 나열해둔 항목 중 최소한 하나만큼은 그래도 조금은 걱정을 덜 수준으로 끌어올려 놓아야 한다. 주말 이틀을 또 반납해야될 판이지만 그래도 어제까지 정말로 지독했던 슬럼프에서 오늘부터는 좀 벗어난 기분이다.
수료 후 취준 시즌에 실무능력이나 알고리즘 둘 중 하나는 확실한 비교우위가 있어야 하는데, 나는 실무능력에 집중하는편이 낫겠다고 판단했다. 하지만 알고리즘도 기본은 하는 수준으로 올리기 위해서 해야할 공부량도 분명 만만치는 않지만, 지속의 힘을 믿자.
728x90
'기록 > 코드스테이츠 프론트엔드' 카테고리의 다른 글
10주 1일차 - 휴가 사용(알고리즘 보충학습) (0) | 2022.06.27 |
---|---|
9주 5일차 - JSON (0) | 2022.06.25 |
9주 3일차 - 섹션2 회고, 재귀, dp (2) | 2022.06.22 |
9주 1일차 - state airline server (1) | 2022.06.20 |
8주차 주말 - express로 api 서버 만들기 (2) | 2022.06.20 |