본문 바로가기

전체 글

(46)
[파이썬 알고리즘 인터뷰] 4장 - 빅오, 자료형 다음은 의 4장 내용을 요약한 것입니다. 빅 오(big-O) 점근적 실행 시간을 표기할 때 쓰이는 수학적 표기법 중 하나. 점근적 실행 시간: 입력값 $n$이 커질 때, 즉 $lim_{n\rightarrow \infty}$ 함수의 실행 시간의 추이를 의미한다. 시간 복잡도(Time Complexity) : 어떤 알고리즘을 수행하는 데 걸리는 시간을 설명하는 계산 복잡도, 이 계산 복잡도를 표기하는 대표적인 방법이 빅오! 대표적인 빅오 표기법의 종류 : $O(1)$ 입력값이 아무리 커도 실행 시간은 일정함. 해시 테이블의 조회 및 삽입이 이에 해당한다. $O(log n)$ 로그는 매우 큰 입력값에도 크게 영향 받지 않으므로 매우 견고함. 이진 검색이 이에 해당 $O(n)$ 알고리즘 수행 시간이 입력값에 비..
[CS224N] Lecture 2: Word Vectors, Word Senses, and Neural Network Classifiers 본 게시글은 Stanford CS224N NLP with Deep Learning 강의를 들으면서 내용을 정리한 것입니다. Word2Vec 1. Review : Main Idea of word2vec 거대한 corpus가 존재하고, 각 corpus 내 단어 position으로부터 center word를 둘러싸고 있는 다른 word를 예측하는 방법. random word vector부터 시작해서 전체 corpus 내 모든 단어들을 대상으로 계산됨. word vector를 활용해서 주변 단어들을 예측하고자 함. $P(o|c) = \frac{exp(u_0^T v_c)}{\sum_{w \in V} exp(u)w^T v_c)}$ Learning : 주변의 단어들을 더 잘 예측할 수 있도록 vector를 업데이트...
데이터 구조 및 분석 : Dynamic Programming 본 게시글은 Edwith 문일철 교수님의 데이터 구조 및 분석: Linear Structure and Dynamic Programming을 듣고 정리한 내용입니다. 1. Dynamic Programming 중복되는 sub-instance가 있는 형태의 recurrence를 푸는 일반적인 알고리즘. Setting up a recurrence : - 큰 instance의 해답을 작은 instance들의 해답과 연결시키는 것. - (1) 작은 instance를 하나 풀어본다. - (2) table에 해답을 기록한다. - (3) table에서 larger instance의 해답을 추출한다. - 즉, 작은 size부터 풀면 큰 사이즈까지 다가갈 수 있다. 2. Memoization dynamic programmi..
데이터 구조 및 분석 : Recursions & Dynamic Programming 본 게시글은 Edwith 문일철 교수님의 데이터 구조 및 분석: Linear Structure and Dynamic Programming을 듣고 정리한 내용입니다. 1. Recursions (재귀호출) Idea Repeating problem ex) 예산이 600만원 있을 때, 전체 예산 기획 과정과 그 하위 부서의 예산 기획 과정은 동일한 문제일 것. => 큰 하나의 문제가 정의되면, 그 문제를 쪼개 반복되는 또 다른 문제로 만든다는 것. Divide and Conquer : 문제를 잘게 쪼개어서 해결하는 과정 Examples) (1) Factorial : $$ Factorial(n) = \left\{\begin{matrix}1 & \textrm{if } n = 0 \\ n \times (n-1) \t..
데이터 구조 및 분석 : Linked List 본 게시글은 Edwith 문일철 교수님의 데이터 구조 및 분석: Linear Structure and Dynamic Programming을 듣고 정리한 내용입니다. 1. Linked List 한줄 요약 : array와 다르게 index가 아닌 reference 구조로 동작해 중간의 공간을 만들어 낼 수 있음. ==와 is 차이를 구분해야 함. == : 값의 일치를 확인함. (values are equivalent) is : 두 object의 reference link를 확인함. 같은 곳에 저장되어있는가 (values are stored at the same place) 2. Basic Structure : Singly linked list Singly linked list는 node와 reference로..
데이터 구조 및 분석 : Abstract Data Types & List(Array) 본 게시글은 Edwith 문일철 교수님의 데이터 구조 및 분석: Linear Structure and Dynamic Programming을 듣고 정리한 내용입니다. 토픽 : Data Structures - Linked list, stack, and que. 특히 Singly linked list, 이를 이용하면 stack과 que를 만들 수 있음. 1. Array for List Idea) 군중들 속에서 Koh라는 사람을 찾는다고 하자. 순서없이 물어본다면 비효율적일 것임. 가장 현실적으로 할 수 있는 것은 line을 세워 찾을 수 있을것임. 즉, 사람들을 일렬로 세운다는 것은 list임. 2. Abstract Data Types An abstract data type(ADT) : data structu..
데이터 구조 및 분석 : UML notation & Structure and Relationship 본 게시글은 Edwith 문일철 교수님의 데이터 구조 및 분석: Linear Structure and Dynamic Programming을 듣고 정리한 내용입니다. More About UML Notations : class를 어떻게 하면 잘 설계할 수 있을까? 현실에서는 다양한 UML diagram들이 있다. use-case, class, state, deployment diagram 등이 존재. OOP (Object-Oriented Programming) 이외에도 다양한 설계 문서들이 있다! Person : Abstract Class(속에 abstract method가 존재.) -> Customer(instantiation) : 위 Person을 상속받아, method를 override해서 사용됨. -..
데이터 구조 및 분석 : Polymorphism & Abstract Class 본 게시글은 Edwith 문일철 교수님의 데이터 구조 및 분석: Linear Structure and Dynamic Programming을 듣고 정리한 내용입니다. Polymorphism이란? poly : Many Morph : Shape => 다양한 모양이다. 즉, 다른 행동이 일어난다. 유사한 시그니처를 가지고 있지만 완전히 다른 행동을 할 때 Polymorphism이 적용된다고 함. Signature = Method name + parameter list 사람으로 치면 Sign, 이 Signature로 구분할 수 있다는 의미 Method Overriding Sub1) 상속받고 있는 Base class (parent)가 method A(num)을 가지고 있고, 이것의 자식 Class(Child)가 m..