FE RYAN
완벽하지 않으면 어때
FE RYAN
전체 방문자
오늘
어제

블로그 메뉴

  • 💾 깃허브 링크
  • 홈
  • 태그
  • 분류 전체보기 (151)
    • 개인프로젝트 (8)
      • 개인 포트폴리오 웹앱 (6)
      • 프론트엔드 기술면접 아카이빙 웹앱 (2)
    • 기록 (121)
      • 원티드 프리온보딩 인턴십 (0)
      • 코드스테이츠 프론트엔드 (75)
      • 생각들 (3)
      • Today I learned (32)
      • 회고 (9)
      • 리뷰 (1)
    • 개발 (17)
      • React (3)
      • Javascript (7)
      • CSS (1)
      • HTML (3)
      • HTTP (1)
      • 자료구조 (0)
      • 알고리즘 (2)
    • 코딩테스트 (2)
      • 백준 (2)
      • 프로그래머스 (0)
    • 디자인 (1)
      • UI & UX (1)
    • 수학 (0)
    • 자기계발 (0)

공지사항

인기 글

태그

  • 신입개발자
  • 원시타입
  • 프론트엔드
  • 회고
  • 자바스크립트
  • 타입스크립트
  • Til
  • 메인프로젝트
  • css
  • 코드스테이츠
  • seb 39
  • useMemo
  • seb39
  • 리액트
  • 딥다이브
  • HTML
  • 부트캠프
  • 포트폴리오
  • ES6
  • 자바스크립트 딥다이브

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
FE RYAN
기록/코드스테이츠 프론트엔드

9주 4일차 - 재귀, dp

기록/코드스테이츠 프론트엔드

9주 4일차 - 재귀, dp

2022. 6. 23. 22:29
728x90

9주 4일차 - 재귀, dp

1. 배운 것

  • 데일리코딩 1번
    • 내장함수 sort 사용하여 오름차순/내림차순 정렬하기
    • Math.max()
  • 코플릿 재귀
    • 재귀로 배열 관련 문제에서 head, tail 활용
    • arr.slice(1) : 맨 앞 요소 하나 빠진 나머지를 리턴.
    • Object.keys(obj).length === 0 이면 빈 객체.
  • dp - 별도 포스팅으로 정리.

2. 내용 정리

데일리코딩 1번

브루트 포스 방법으로 푸신 분들도 있었다. 아직 안배워서 난 모름

  1. 오름차순으로 기존 배열 정렬.
  2. 3개의 요소를 곱해야 하므로 오름차순 정렬 시 왼쪽 끝에서부터는 음수 쪽 최댓값, 오른쪽 끝에서 역순으로는 양수 쪽 최댓값 이므로 양수 쪽 최댓값은 오른쪽 끝부터 3개를 곱하고 음수 쪽 최댓값은 왼쪽끝부터 2개 곱하고 양수 쪽 최댓값을 곱함.
  3. 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차원 배열의 숫자 요소 정렬하는 방법:

자바스크립트 정렬 함수, sort()

  1. 오름차순: arr.sort((a,b) ⇒ a - b);
  2. 내림차순: 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
  • 1. 배운 것
  • 2. 내용 정리
  • 데일리코딩 1번
  • 재귀
  • 참고 자료
  • 3. 리뷰
  • 3.1 좋았던 점
  • 3.2 아쉬웠던 점
  • 3.3 notes
'기록/코드스테이츠 프론트엔드' 카테고리의 다른 글
  • 10주 1일차 - 휴가 사용(알고리즘 보충학습)
  • 9주 5일차 - JSON
  • 9주 3일차 - 섹션2 회고, 재귀, dp
  • 9주 1일차 - state airline server
FE RYAN
FE RYAN

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.