31일차 TIL 210415

1. 그래프란?

  • 여러개의 점들이 서로 복잡하게 연결되어있는 관계를 표현한 자료구조.
스크린샷 2021-04-16 오전 12 13 11
  • 직접적인 관계를 가지고 있다면, 바로 이어주는 선이 존재하고, 간적접인 관계를 가지고 있다면 다른 여러점을 거쳐서 이어지는 선이 존재할 수 있다.
  • 어떠한 간선으로도 연결되지 않는다면 그 점들은 관계가 없다고 말할 수 있다.
  • 정점(vertex), 간선(edge)
  • 무향 그래프(undirected graph) : 간선에 방향이 없는 경우
  • 진입차수(in-degree) / 진출차수( out-degree) : 한 정점에 진입하고 진출하는 간선의 수
  • 인접(adjacency) : 두 정점간의 간선이 직접 이어져있다면 인접한 정점이다.
  • 자기 루프(self loop) : 정점에서 진출하는 간선이 곧바로 자기자신에게 진입하는 경우(다른 정점을 거치지 않는다)
  • 사이클(cycle) : 한 정점에서 출발하여 다시 해당 정점으로 돌아갈 수 있는 경우

1-1. 그래프의 표현 방식 : 인접행렬(Matrix)

  • 두 정점이 이어져있다면 1 아니라면 0으로 표시하는 일종의 표같은 방식
스크린샷 2021-04-16 오전 12 25 38
  • 두 정점 사이에 관계가 있는지, 없는지 확인하는데 용이하다.
  • 가장 빠른 경로를 찾고자 할떄 주로 사용됨.

1-2 그래프의 표현 방식 : 인접리스트

  • 각 정점이 어떤 정점과 인접한지 리스트의 형태로 볼 수 있는 표현 방식
스크린샷 2021-04-16 오전 12 29 03
  • 순서는 중요하지 않다.
  • 메모리를 효율적으로 사용하고 싶다면 인접행렬 다시 인접 리스트를 사용한다.

2. 트리

  • 데이터가 바로 아래에 있는 하나 이상의 데이터에 단방향으로 연결되는 계층적 자료구조…뭔소리야?
  • 거꾸로된 나무와 비슷한 구조이다. 하나의 뿌리로부터 가지가 사방으로 뻗은 형태를 가지고있다.
스크린샷 2021-04-16 오전 12 40 22
  • 루트 라는 하나의 꼭지점 데이터를 시작으로 여러개의 데이터를 간선으로 연결한다. 이 데이터들을 노드라고 하고, 상위노드와 하위노드가 연결되면 부모/자식 관계를 가지게 된다.
스크린샷 2021-04-16 오전 12 52 05
  • 이 자료구조는 높이와 깊이를 측정할 수 있다.
  • 트리 실사용 예제 : 컴퓨터의 디렉토리 구조, 가계도, 조직도, 대진표

3. Binary Search Tree

  • 자식노드가 최대 두 개인 노드들로 구성된 트리를 이진 트리라고 한다. 왼쪽 자식과 오른쪽 자식으로 분류한다.
  • 모든 왼쪽 자식들은 루트나 부모보다 작은 값이고, 모든 오른쪽 자식들은 루트나 부모보다 큰 값인 특징을 가지고 있는 트리를 이진 탐색 트리라고 한다.

4. 디버깅의 중요성

  • 내가 디버깅이 되고, 디버깅이 내가 되는 경지에 이르렀을때 문제가 풀리더라..
  • 콘솔 찍어보고 디버깅 돌려보고!! 답은 그것밖에 없다!

Updated: