전체 글 (177) 썸네일형 리스트형 11강 - 다이나믹 프로그래밍 (Dynamic Programming) 1. DP 1) 정의 1> 큰 문제를 작은 문제로 나눠 풀 때 작은 문제들이 같은 문제라면 2> 그 문제들을 매번 재계산하지 않고 값을 저장해두었다가 재사용하는 기법 2) 특징 1> 단순 분할 정복과는 다르게 동일한 문제를 다시 풀지 않습니다. 2> Memoization을 통해 이미 계산한 결과는 array에 저장함으로써 나중에 동일한 계산이 필요한 경우 단순 return합니다. 2. 예시 (피보나치 수열) #include using namespace std; int memo[100]; int fibonacci(int x) { if (x == 1) return 1; if (x == 2) return 1; if (memo[x] != 0) return memo[x]; // 기록한 적이 있다면 기록한 것을 출.. CSS 빠른 정리 1. CSS 1) 정의 : Cascading Style Sheet 2) 특징 1> HTML이 정보 부분을 담당한다면 CSS는 디자인을 담당 2> HTML로 작성된 정보를 꾸며주는 언어 3> 문서의 레이아웃과 스타일 정의 3) CSS 구성요소 선택자 {속성: 속성값;} 1> 선택자: 디자인 작업을 진행한 HTML 영역 ex> 태그에 어떤 디자인을 입히고 싶은 경우 을 선택자 자리에 넣는다. 2> 속성: 어떤 디자인을 적용할지 ex> 글자 색을 변경하고 싶다. => color / 글자 크기를 변경하고 싶다. => font size 3> 속성값: 해당 디자인에 대해 구체적으로 명령 ※ 규칙 1> 중괄호 2> ;로 마침표 찍어주기 h1 { font-size: 20px; font-family: sans-serif.. HTML 빠른 정리 1. HTML 1) 정의 1> HyperText Markup Language 2> 웹 문서를 만들기 위해 약속된 언어 2) HyperText 1> 링크하는 기능 2. 태그 1) 태그 규칙 1> 시작과 종료 태그 - 여는 태그가 있으면 닫는 태그가 있다. 2> 태그는 중첩 사용이 가능하다. 3> HTML 상에서의 들여쓰기와 줄 바꿈의 큰 의미가 없다. - 들여쓰기와 줄 바꿈을 하는 건 보기에 편하라고 하는 것 - 에디터를 사용하면 자동으로 해준다. 4> 대소문자 구분이 없다. - 그냥 하나로 일관성 있게 입력하는 것이 좋다. 5> 태그 내 글자의 공백 처리 - 태그 내에서 공백은 한 칸을 기준으로 하기 때문에 글자 사이에 2칸 띄우려면 태그 사용한다.) 2) 태그와 속성 - 형태로 사용한다. 1> 예시: .. 10강 - 큐 (Queue) 1. 큐 1) 정의 1> FIFO (First In First Out) 2> 먼저 집어 넣은 data가 먼저 나오는 구조 3> data 삽입은 한 쪽 끝에서, 삭제는 반대쪽 끝에서만 일어난다. 4> 용어 - rear: 삽입이 일어나는 쪽 - front: 삭제가 일어나는 곳 2) 특징 1> 일종의 리스트 2> Linked List로 구현 3) 선언 1> 헤더 파일 #include 2> 큐 선언 queue '변수명'; 4) 연산 1> 추가: 뒷 부분(back) 추가 q.push(element); // 큐의 뒷 부분에(back) 원소를 추가 2> 삭제: 앞에 있는(front) element를 삭제 q.pop(); // 큐의 앞에 있는(front) 원소를 삭제 3> 조회 - front (삭제 되는 곳) q.fr.. 9강 - 스택 (Stack) 1. 스택 1) 정의 1> LIFO (Last In First Out) 2> 한 쪽 끝에서만 자료를 넣고 뺄 수 있는 형식의 자료 구조 3> 가장 최근에 추가한 항목이 가장 먼저 제거될 항목이다. 4> 택배 상하차를 생각한다. 2) 특징 3) 선언 1> 헤더 파일 #include 2> 스택 선언 stack '변수명' 4) 기본 함수 1> 추가 s.push(element) // item 하나를 스택의 가장 윗(top) 부분에 추가 2> 삭제 s.pop(); // 가장 위(top)에 있는 element를 삭제 3> 조회 s.top(); // 스택 맨 위(top)에 있는 원소를 return 4> 크기 s.size(); // 스택 내부의 element 개수를 return 5> 비어있는지 s.empty(); //.. 6강 - C++ STL sort() 함수 0. STL 1> 표준 라이브러리 (Standard Template Library) 2> 프로그램에 필요한 자료구조와 알고리즘을 Template로 제공하는 라이브러리 1. Sort 함수 1) 특징 1> '#include '을 선언해야 한다. 2> quick sort를 기반으로 함수가 구현되어 있어서 3> 시간복잡도가 O(nlogn)이다. 2) 사용법 기본 sort(start 주소, end 주소) 1> [start, end) 범위에 있는 element들을 - start를 포함하고 end를 포함하지 않는 구간 - 그러니 정렬하고 싶은 범위보다 하나 더 뒤에 있는 원소의 주소까지 argument에 넣어야 한다. 2> 오름차순(default)으로 정렬한다. 3) 다른 사용 예시 1> array sort(arr,.. 5강 - 병합 정렬 (Merge Sort) 1. 병합 정렬 1) 정의 2) 특징 1> 분할 정복 알고리즘(divide and conquer)의 하나 2> 시간 복잡도: - 편향된 분할을 하는 퀵 정렬과 달리 - 정확히 절반으로 분할을 해서 O(nlogn)을 보장한다. 3> 안정 정렬 4> 일단 반으로 쪼개고 나중에 합친다. 3) 퀵 정렬과 다른 점 1> pivot이 없다. 2> 그래서 항상 반으로 분할한다. (편향된 분할을 하지 않는다.) 2. 구체적인 과정 (오름차순 기준) 0> 해당 분할의 길이가 0 또는 1이면 이미 정렬된 것으로 본다. 1> 계속해서 2등분으로 잘게 잘라놓는다. 2> 맨 처음 2개의 분할을 가지고 진행한다. 3> (각 분할은 이미 정렬되어 있다) 각 분할의 가장 맨 앞의 값을 비교하여 작은 값을 다른 array(sorted.. 4강 - 퀵 정렬 (Quick Sort) 다양한 퀵 정렬 중에서 보편화된 방법 하나를 다루겠습니다. 1. 퀵 정렬 1) 정의 2) 특징 1> 분할 정복 알고리즘(divide and conquer)의 하나 2> 시간 복잡도: O(nlogn ~ n^2) 3> 불안정 정렬 4> 비교 정렬 (다른 원소와의 비교만으로 정렬을 수행) cf> pivot: 기준 (정도로 생각하면 된다.) 농구에서 pivot이 한 발만 땅에 대고 움직이는 것을 연상하면 이해가 쉽습니다. - pivot을 무엇으로 하느냐에 따라 퀵 정렬 종류도 다양합니다. 2. 구체적인 과정 (오름차순을 기준) 1) 구체적인 순서 1> 맨 앞의 element를 pivot으로 설정 2> pivot을 제외하고 - 맨 왼쪽부터 pivot보다 큰 숫자를 찾고 - 맨 오른쪽부터 pivot보다 작은 숫자를.. 이전 1 ··· 17 18 19 20 21 22 23 다음