2진 트리(Heap)자료당 두 개의 위치정보(링크)를 이용해 셋을 하나로 묶는다.맨 꼭대기를 기준으로 왼쪽에는 작은 숫자, 오른쪽에는 큰 숫자 카드가 있다고 가정한다.생각해볼 문제: 여기에 5번이 있는지 알고 싶다 몇 번 비교하면 찾을 수 있을까? → 3회2진 트리 = Heap(힙) → 정보를 빠르게 나열하기가 굉장히 좋다. 파이썬 코드로 Heap 구현하기Heap(힙)은 최대/최소값을 찾는데 최적화된 자료구조힙은 기본적으로 완전 이진 트리 = 무조건 왼쪽 자식 노드부터 데이터 삽입힙은 데이터의 중복을 허용push → heappush (값 넣기)pop → heappop (값 빼기)최대 힙(Max Heap)최대 힙은 루트 노드가 가장 큰 값을 가지고, 부모 노드가 항상 자식 노드보다 값이 크거나 같다.최소..
Stack(스택)1차원 선형 구조 → I/O 지점이 1개 뿐인 자료구조 → Stack Last In First Out 구조 (LIFO) → 후입선출, 김치냉장고 처음 넣은 것은 맨 아래 바닥에 깔린다.두 번째부터는 처음 넣은 것 위에 쌓인다.바닥에 있는 것을 꺼내려면 위에 쌓인 것들을 모두 치우는 수 밖에 없다.생각해볼 문제: 이런 구조는 왜 필요할까? → 뒤집기(순서 바꾸기), 되돌아가기(Ctrl + Z)Stack → Ctrl + Z Queue(큐)I/O 지점이 양 끝단으로 나뉘어져 있다. → QueueFirst In First Out 구조 → 선입선출버스를 타기 위해 줄을 서는 것과 같다.은행에서 번호표 뽑은 순서로 기다리는 것과 같다.Enqueue → 큐에 뭔가를 집어넣는다.Dequeue → 큐에..
자료를 정리하는 이유좌측과 우측을 비교해보면 자료를 정리하는 이유를 명확히 알 수 있다.머리속에 기억하는 것이 중요한 것이 아니라, 필요할 때 빨리 찾아서 활용할 수 있는 것이 중요하다.잘 정리해놔야 원하는 시점에 원하는 정보를 빠르게 찾아서 활용할 수 있다. 어떻게 정리할 것인가? (1)효율 좋은 사람은 '정리'를 잘한다.지저분한 방을 깨끗이 정리하는 규칙이 알고리즘이다.일정 규칙으로 자료를 나열(혹은 정리)하는 것이 자료구조다.구조화된 자료에서 원하는 것을 빨리 찾아내는 방법은 알고리즘이다. 어떻게 정리할 것인가? (2)이름 순으로, 키 순으로 정렬(Sort)한다.분야(카테고리)를 나누고 성질이 비슷한 것들을 따로 모은다.필요하다면 '단위와 규격'을 만든다. (예: 1반, 2반)생각해볼 문제주민등..