목록[알고리즘]/[c언어 알고리즘 스터디] (19)
개발자로 후회없는 삶 살기
서론 Set을 구현해보겠습니다. ※ 이 포스트는 다음 교재의 학습이 목적임을 밝힙니다. https://github.com/easysIT/doit_dsalgo_with_c GitHub - easysIT/doit_dsalgo_with_c: Do it! 자료구조와 함께 배우는 알고리즘 C 언어 편 Do it! 자료구조와 함께 배우는 알고리즘 C 언어 편. Contribute to easysIT/doit_dsalgo_with_c development by creating an account on GitHub. github.com 본론 - 집합 개념 1. 순서가 없습니다. 2. X = {1,2,3} 으로 표현합니다. 3. 표기법 1) a가 집합 X의 원소 a∈X 2) b가 집합 X의 원소가 아닙니다 b∈/X 3..
서론 트리를 이용하는 힙정렬 ※ 이 포스트는 다음 교재의 학습이 목적임을 밝힙니다. https://github.com/easysIT/doit_dsalgo_with_c GitHub - easysIT/doit_dsalgo_with_c: Do it! 자료구조와 함께 배우는 알고리즘 C 언어 편 Do it! 자료구조와 함께 배우는 알고리즘 C 언어 편. Contribute to easysIT/doit_dsalgo_with_c development by creating an account on GitHub. github.com 본론 - 힙이란? 정의 : 부모가 항상 자식보다 큰 것을 만족하는 완전 이진 트리 -> 이것을 보고 떠올린 것 = 아래에서부터 훑어서 위로가면 오름차순 정렬이겠습니다. (삭제를 해야 오름차..
서론 시간 복잡도를 낮추는 정렬들! ※ 이 포스트는 다음 교재의 학습이 목적임을 밝힙니다. https://github.com/easysIT/doit_dsalgo_with_c GitHub - easysIT/doit_dsalgo_with_c: Do it! 자료구조와 함께 배우는 알고리즘 C 언어 편 Do it! 자료구조와 함께 배우는 알고리즘 C 언어 편. Contribute to easysIT/doit_dsalgo_with_c development by creating an account on GitHub. github.com 본론 - 쉘 정렬 아이디어 : 삽입정렬을 할 때 배열이라는 자료구조 특성상 요소를 삽입할 때 이후 요소를 한 칸 씩 밀어야하는 비용을 줄이자! => 방법 1. n, n/2, n/4,..
서론 생각해보니 정렬을 알긴 알아도 깊게 파고 들어서 정립한 적은 없습니다. 제대로 파헤쳐 보겠습니다. ※ 이 포스트는 다음 교재의 학습이 목적임을 밝힙니다. https://github.com/easysIT/doit_dsalgo_with_c GitHub - easysIT/doit_dsalgo_with_c: Do it! 자료구조와 함께 배우는 알고리즘 C 언어 편 Do it! 자료구조와 함께 배우는 알고리즘 C 언어 편. Contribute to easysIT/doit_dsalgo_with_c development by creating an account on GitHub. github.com 본론 - 정렬을 하는 이유 1. 데이터를 정렬하면 검색을 더 쉽게 할 수 있습니다. 2. 만약 사전에 실린 단어가..
서론 재귀에 대해 알아보겠습니다. ※ 이 포스트는 다음 교재의 학습이 목적임을 밝힙니다. https://github.com/easysIT/doit_dsalgo_with_c 본론 - 스스로 익힌 재귀의 패턴 1. 부분문제로 쪼개는 생각 2. 쪼개도 같은 목표를 바라보는 생각 3. 종료조건 ex) 유클리드 호제법 22 % 8 > 8 % 6 > 6 % 2 > 4 % 2 > 2 % 2 -> 이것이 바로 부분문제로 쪼개고, 쪼개도 같은 목표를 바라보는 것 int gcd(int x, int y){ if(x % y == 0) return y; gcd(y, x % y); } int main(void){ printf("%d", gcd(22, 8)); // 정답 : 2 } EX) 배열 a의 모든 요소의 최대공약수를 구하라..
서론 스택을 알아보겠습니다! ※ 이 포스트는 다음 교재의 학습이 목적임을 밝힙니다. https://github.com/easysIT/doit_dsalgo_with_c GitHub - easysIT/doit_dsalgo_with_c: Do it! 자료구조와 함께 배우는 알고리즘 C 언어 편 Do it! 자료구조와 함께 배우는 알고리즘 C 언어 편. Contribute to easysIT/doit_dsalgo_with_c development by creating an account on GitHub. github.com 본론 - 함수 호출을 스택으로 한다? -> 실제 함수 호출은 훨씬 복잡합니다. - 스택 구조체 -> 멤버 1. stk : 스택 배열을 바라볼 배열 포인터 2. ptr : 스택 포인터 > 두..
서론 검색 알고리즘을 알아보겠습니다. ※ 이 포스트는 다음 교재의 학습이 목적임을 밝힙니다. https://github.com/easysIT/doit_dsalgo_with_c GitHub - easysIT/doit_dsalgo_with_c: Do it! 자료구조와 함께 배우는 알고리즘 C 언어 편 Do it! 자료구조와 함께 배우는 알고리즘 C 언어 편. Contribute to easysIT/doit_dsalgo_with_c development by creating an account on GitHub. github.com 본론 - 특징 검색은 특정 항목에 주목합니다. 국적을 검색하는 경우 국적이 키이고 나이를 검색하는 경우 나이가 키입니다. - 종류 1. 선형 검색 : 무작위로 늘어놓은 데이터 모임..
서론 교육 받은 내용을 참고합니다. 본론 - 알고리즘 평가 주의사항 1. 코드의 모든 줄은 O(1)인가요? 1) 아니다. 인풋 크기와 상관없이 실행되는 코드만 O(1)입니다. 그렇지 않은 코드는 시간 복잡도를 따져야합니다. 2) sorted나 sort 메소드는 퀵 정렬을 사용하고 인풋 크기에 따라 상관이 없지 않으므로 O(nlogn)입니다. 3) in 키워드는 선형 탐색이고 인풋 크기에 따라 상관이 있으므로 O(n)입니다. 4) 리스트의 상황에 따른 시간 복잡도 이해하자! 1) 인덱싱 : 크기와 상관없이 요소 하나만 다룹니다. 2) 정렬, 탐색 : 위에서 말합니다. 3) 뒤집기 : 역순으로 정렬로 배열을 뒤짚는 거니 크기에 따라 상관이 있음 -> 회문처럼 풀면 n/2라서 O(n) 4) 끝에 요소 추가 :..