알고리즘(38)
-
[패스트캠퍼스 수강 후기] {코딩테스트인강} 100% 환급 챌린지 17회차 미션
대표적인 정렬1: 버블 정렬 A. 알고리즘 연습 방법 - 알고리즘을 잘 작성하기 위해서는 잘 작성된 알고리즘을 이해하고, 스스로 만들어봐야 함 - 모사! 그림을 잘 그리기 위해서는 잘 그린 그림을 모방하는 것부터 시작 - 이번 챕터부터 알고리즘 시작입니다.! - 알고리즘 연습 방법 1. 연습장과 펜을 준비하자. 2. 알고리즘 문제를 읽고 분석한 후에, 3. 간단하게 테스트용으로 매우 간단한 경우부터 복잡한 경우 순서대로 생각해보면서, 연습장과 펜을 이용하여 알고리즘을 생각해본다 4. 가능한 알고리즘이 보인다면, 구현할 알고리즘을 세부 항목으로 나누고, 문장으로 세부 항목을 나누어서 적어본다. 5. 코드화하기 위해, 데이터 구조 또는 사용할 변수를 정리하고, 6. 각 문장을 코드 레벨로 적는다 7. 데이터..
2020.11.04 -
[패스트캠퍼스 수강 후기] {코딩테스트인강} 100% 환급 챌린지 16회차 미션
4. 힙 구현 힙과 배열 -> 일반적으로 힙 구현 시 배열 자료구조를 활용 -> 배열은 인덱스가 0번부터 시작하지만 힙 구현의 편의를 위해 root 노드 인덱스 번호를 1로 지정하면 구현이 좀 더 수월함 - 부모 노드 인덱스 번호 = 자식 노드 인덱스 번호 //2 - 왼쪽 자식 노드 인덱스 번호 = 부모 노드 인덱스 번호 *2 - 오른쪽 자식 노드 인덱스 번호 = 부모 인덱스 번호 * 2 +1 #예1 – 10 노드의 부모 노드 인덱스 2//2 #예1 -15 노드의 왼쪽 자식 노드 인덱스 번호 1*2 #예1 – 15 노드의 오른쪽 자식 노드 인덱스 번호 2*2+1 힙에 데이터 삽입 구현 (Mas Heap 예) 힙 클래스 구현1 class Heap: def __init__(self, data): self.h..
2020.11.03 -
[패스트캠퍼스 수강 후기] {코딩테스트인강} 100% 환급 챌린지 15회차 미션
대표적인 데이터 구조8: 힙 1.힙이란 -->데이터에서 최대값과 최소값을 빠르게 찾기 위해 고안된 완전 이진 트리 1.1 완전 이진 트리 -노드를 삽입할 때 최하단 왼쪽 노드부터 차례대로 삽입하는 트리 -힙을 사용하는 이유 배열에 데이터를 넣고 최대값과 최소값을 찾으려면 O(n)이 걸림 이에 반해 힙에 데이터를 넣고 최대값과 최소값을 찾으면 O(logn)이 걸림 우선순위 큐와 같이 최대값 또는 최소값을 빠르게 찾아야 하는 자료구조 및 알고리즘 구현 등에 활용 2.힙 구조 -->힙은 최대값을 구하기 위한 구조(=최대 힙) 와 최소값을 구하기 위한 구조(=최소힙) -->힙은 두가지 조건을 갖고 있는 자료구조 - 각 노드의 값은 해당 노드의 자식 노드가 가진 값보다 크거나 같다(최대 힙 경우) 최소 힙의 경우..
2020.11.02 -
[패스트캠퍼스 수강 후기] {코딩테스트인강} 100% 환급 챌린지 13회차 미션
5.5 이진 탐색 트리 삭제 코드 구현과 분석 5.5.1 삭제할 Node 탐색 삭제할 Node가 없는 경우도 처리해야함 - 이를 위해 삭제할 Node가 없는 경우는 False를 리턴하고 함수를 종료 시킴 #def delete(self, value): searched = False self.current_mode = self.head self.parent =self.head while self.current_node: if self.current_node.value == value: searched = True break elif value < self.current_node.value: self.parent = self.current_node self.current_node = self.current_n..
2020.10.31 -
[패스트캠퍼스 수강 후기] {코딩테스트인강} 100% 환급 챌린지 12회차 미션
5.3 이진트리 탐색 class NodeMgmt: def __init__(self, head): self.head = head def insert(self, value): self.current_node = self.head while True: if value < self.current_node.value: if self.current_node.left != None: self.current_node = self.current_node.left else: self.current_node.left = Node(value) break else: if self.current_node.right != None: self.current_node = self.current_node.right else: self...
2020.10.30 -
[패스트캠퍼스 수강 후기] {코딩테스트인강} 100% 환급 챌린지 11회차 미션
대표적인 데이터 구조7 : 트리 1. 트리 구조 A. 트리: NODE와 BRANCH를 이용해 사이클을 이루지 않도록 구성한 데이터 구조 B. 실제로 어디에 많이 사용되는가 트리 중 이진 트리 형태 구조 & 탐색 알고리즘 구현을 위해 많이 사용됨 2. 알아야 하는 용어 A. NODE: 트리에서 데이터를 저장하는 기본요소 B. ROOT NODE: 트리 맨 위에 있는 노드 C. LEVEL: 최상위 노드를 LEVEL 0으로 했을 때 하위 BRANCH로 연결된 노드의 깊이 D. PARENT NODE: 어떤 노드의 다음 레벨에 연결된 노드 E. CHILD NODE: 어떤 노드의 상위 레벨에 연결된 노드 F. LEAF NODE ( TERMINAL NODE) : CHILD NODE가 하나도 없는 노드 G. SILBLI..
2020.10.29