스터디 방식
[스터디 시작 전]
자바스크립트로 하는 자료구조와 알고리즘
책을 읽고 연습 문제 풀기[스터디 진행 중]
당일 학습 분량 내에서 질의 응답
시즌1 알고리즘 스터디 방식
1주 1유형 3문제 풀기
- 매주 정해진 출제자가 특정 유형과 문제를 선정한다.
- 출제자는 이전 주 금요일까지 주제 선정 및 문제 3개 업로드
- 문제 출처: LeetCode
[참고] 리트코드 추천 75문제
- 문제를 스터디 모임 시간 전까지 풀어온다.
- 각자 풀이는 문제페이지에 올리기
(목차)자바스크립트로 하는 자료구조와 알고리즘
1장. 빅오 표기법
__빅오 표기법 기초
____일반적인 예
__빅오 표기법 규칙
____계수 법칙: “상수를 제거하라”
____합의 법칙: “빅오를 더하라”
____곱의 법칙: “빅오를 곱하라”
____다항 법칙: “빅오의 k승”
__요약
__연습 문제
____정답
2장. 자바스크립트의 독특한 특징
__자바스크립트 범위
____전역 선언: 전역 범위
____var를 사용해 선언하기: 함수 범위
____let을 활용한 선언: 블록 범위
__등가와 형
____변수형
____참/거짓 확인
____=== 대 ==
____객체
__요약
3장. 자바스크립트 숫자
__숫자 체계
__자바스크립트 숫자 객체
____정수 반올림
____NumberEPSILON
____최대치
____최소치
____무한
____크기 순서
____숫자 알고리즘
____소인수 분해
__무작위 수 생성기
__연습 문제
__요약
4장. 자바스크립트 문자열
__자바스크립트 문자열 기본
____문자열 접근
____문자열 비교
____문자열 검색
____문자열 분해
____문자열 바꾸기
__정규 표현식
____기본 정규 표현식
____자주 사용하는 정규 표현식
____숫자를 포함하는 문자
____숫자만 포함하는 문자
____부동소수점 문자
____숫자와 알파벳만을 포함하는 문자
____질의 문자열
__인코딩
__Base64 인코딩
__문자열 단축
__암호화
____RSA 암호화
__요약
5장. 자바스크립트 배열
__배열 소개
____삽입
____삭제
____접근
__반복
____for (변수; 조건; 수정)
____for ( in )
____for ( of )
____forEach( )
__도움 함수
____slice(begin,end)
____splice(begin,size,element1,element2)
____concat( )
____length 속성
____전개 연산자
__연습 문제
__자바스크립트 함수형 배열 메소드
____map
____filter
____reduce
__다차원 배열
__연습 문제
__요약
6장. 자바스크립트 객체
__자바스크립트 객체 속성
____프로토타입 활용 상속
__생성자와 변수
__요약
__연습 문제
7장. 자바스크립트 메모리 관리
__메모리 누수
____객체에 대한 참조
____DOM 메모리 누수
____window 전역 객체
____객체 참조 제한하기
____delete 연산자
__요약
__연습 문제
8장. 재귀
__재귀 소개
__재귀의 규칙
____기저 조건
____분할 정복 방식
____대표적인 예: 피보나치 수열
____피보나치 수열: 꼬리 재귀
____파스칼의 삼각형
__재귀의 빅오 분석
____점화식
____마스터 정리
__재귀 호출 스택 메모리
__요약
__연습 문제
9장. 집합
__집합 소개
__집합 연산
____삽입
____삭제
____포함
__기타 유틸리티 함수
____교집합
____상위 집합 여부 확인
____합집합
____차집합
__요약
__연습 문제
10장. 검색과 정렬
__검색
____선형 검색
____이진 검색
__정렬
____거품 정렬
____선택 정렬
____삽입 정렬
____빠른 정렬
____빠른 선택
____병합 정렬
____계수 정렬
____자바스크립트 내장 정렬
__요약
__연습 문제
11장. 해시 테이블
__해시 테이블 소개
__해싱 기법
____소수 해싱
____탐사
____재해싱/이중 해싱
__해시 테이블 구현
____선형 탐사 사용하기
____이차 탐사 사용하기
____선형 탐사를 활용해 이중 해싱 사용하기
__요약
12장. 스택과 큐
__스택
____들여다보기
____삽입
____삭제
____접근
____검색
__큐
____들여다보기
____삽입
____삭제
____접근
____검색
__요약
__연습 문제
13장. 연결 리스트
__단일 연결 리스트
____삽입
____값에 의한 삭제
____헤드 항목 삭제
____검색
__이중 연결 리스트
____헤드에 항목 삽입하기
____테일에 항목 삽입하기
____헤드의 항목 삭제하기
____테일의 항목 삭제하기
____검색
__요약
__연습 문제
14장. 캐싱
__캐싱 이해하기
__LFU 캐싱
__LRU 캐싱
__요약
15장. 트리
__일반적인 트리 구조
__이진 트리
__트리 순회
____선순위 순회
____중순위 순회
____후순위 순회
____단계순위 순회
____트리 순회 요약
__이진 검색 트리
____삽입
____삭제
____검색
__AVL 트리
____단일 회전
____오른쪽 회전
____이중 회전
____트리 균형 잡기
____삽입
____AVL 트리 예제 종합
__요약
__연습 문제
16장. 힙
__힙에 대한 이해
____최대 힙
____최소 힙
__이진 힙 배열 인덱스 구조
____삼투: 위로 아래로 이동
____삼투 구현하기
____최대 힙 예
__최소 힙 구현 완성
__최대 힙 구현 완성
__힙 정렬
____오름차순 정렬(최소 힙)
____내림차순 정렬(최대 힙)
__요약
__연습 문제
17장. 그래프
__그래프 기본
__무지향성 그래프
____간선과 정점 추가하기
____간선과 정점 삭제하기
__지향성 그래프
__그래프 순회
____너비 우선 검색
____깊이 우선 검색
__가중치가 있는 그래프와 최단 경로
____가중치가 있는 간선을 지닌 그래프
____다익스트라의 알고리즘: 최단 경로
__위상 정렬
__요약
18장. 고급 문자열
__트라이(접두사 트리)
__보이어-무어 문자열 검색
__커누스-모리스-플랫 문자열 검색
__라빈-카프 검색
____라빈 지문
____실생활 적용 예
__요약
19장. 동적 프로그래밍
__동적 프로그래밍의 필요성
__동적 프로그래밍의 규칙
____중복 부분 문제
____최적 부분 구조
____예: 걸음 수를 채우는 방법
__대표적인 동적 프로그래밍 예
____배낭 문제 알고리즘
____최장 공통 부분 수열 알고리즘
____동전 교환 알고리즘
____편집 거리 알고리즘
__요약
20장. 비트 조작
__비트 연산자
____AND
____OR
____XOR
____NOT
____왼쪽 이동
____오른쪽 이동
____오른쪽 이동 후 0으로 채우기
__숫자 연산
____덧셈
____뺄셈
____곱셈
____나눗셈
__요약
시즌1 문제