알고리즘 기초 - 이진 트리(Binary Tree)
·
My Study/Algorithm
▶ 이진 트리(Binary Tree)란?이진 트리는 트리 자료구조 중에서 가장 간단한 형태의 트리입니다. 일반적인 이진 탐색 트리는 아래 그림과 같은 구조를 갖습니다. 모든 트리가 다 이진 트리는 아니며, 이진 탐색 트리는 아래와 같은 두 가지의 특징을 가집니다.- 부모 노드보다 왼쪽 자식 노드가 작습니다.- 부모 노드보다 오른쪽 자식 노드가 작습니다.수식으로 표현하자면 왼쪽 자식 노드 가 성립해야지만 이진 트리라고 할 수 있는 것입니다.​보통 이진 트리는 파이썬의 클래스를 이용해 표현합니다. 위 그림의 이진트리를 파이썬 코드를 이용해 나타내보겠습니다.class Node: ## 각 노드의 값과 왼쪽 노드와 오른쪽 노드의 정보 저장 def __init__(self, item): sel..
알고리즘 기초 - DFS/BFS
·
My Study/Algorithm
- DFS 란? 정의! 깊이 우선 탐색(Depth-First Search), 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘입니다. 최대한 깊이 내려간 뒤, 더 이상 깊이 갈 곳이 없을 경우 옆으로 이동합니다. 동작 과정! DFS에서는 스택을 사용합니다. 1. 시작 노드를 스택에 삽입 하고 방문 처리 해줍니다. 2. 스택의 최상단 노드에 방문하지 않은 이웃 노드가 있다면 그 노드를 스택에 넣어주고 방문처리해줍니다. 그렇지 않으면 스택의 최상단 노드를 꺼내줍니다. 3. 방문하지 않은 노드가 존재하지 않아, 더 이상 수행할 수 없을 때 까지 2번의 과정을 반복 수행해줍니다. 아래 그래프로 예를 들어보겠습니다. 위와 같은 그래프가 있을 때, 탐색 순서는 1-2-7-6-8-3-4-5입니다. DFS는 단순 재..
알고리즘 기초 - 그리디
·
My Study/Algorithm
"그리디" 방법이란? 현재의 상황에서 지금 당장 좋은 것만 선택하는 방법입니다. 가장 좋아 보이는 것을 반복적으로 선택해도 최적의 해에 도달할 수 있을지 검토하는 정당성 분석이 가장 중요합니다. ​ 대표적인 문제 그리디를 이용해 해결할 수 있는 문제 중 가장 대표적인 문제로는 "1이 될 때까지" 문제가 있습니다. #어떠한 수 N이 1이 될 때까지 다음의 두 과정 중 하나를 반복적으로 선택하여 수행하려고 한다. #단, 두 번째 연산은 N이 K로 나누어떨어질 때만 선택할 수 있다. #1. N에서 1을 뺀다. #2. N을 K로 나눈다. #입력 예시: 17 4 #출력 예시: 2 def solution(n, k): c = 0 while True: if n%k == 0: n = n//k c +=1 else: n =..