본 게시물은 코드잇의(codeit) 자료구조 시리즈 강의 두번째 주제인 '알고리즘 패러다임'을 듣고 정리한 게시물임을 알려드립니다.
- 강의 url : https://www.codeit.kr/topics/trees?mediumTypedId=UGxheWxpc3Q6NjZkZDU5YWI4OTg1YTI3ZWRkOTdlOWUz
트리의 구조와 탐색 - 알고리즘 · 자료구조 강의 | 코드잇
트리는 계층적 데이터를 효과적으로 표현할 수 있는 자료 구조입니다. 데이터가 서로 연결되어 있는 모습이 나무에서 가지가 뻗어 나간 모습과 비슷하다고 해서 트리라는 이름이 붙었죠. 트리
www.codeit.kr
1~2. Divide and Conquer 소개
1) Divide and Conquer의 개념
- 어떤 문제가 있는데 답을 바로 알아내기에는 문제가 너무 크다고 가정하면, 이 문제를 나눠서 풀어야 한다.
- 즉, 기존 문제랑 같은 형태를 가진 부분 문제로 나눠서 해결하는 것
- 각 부분 문제를 풀고 부분 문제에 대한 솔루션들을 이용해서 기존 문제를 해결하면 됨
2) Divide and Conquer 개념의 구조적인 설명
어떤 문제를 해결하는 f를 만들고 싶다고 가정
- f는 파라미터로 인풋 x를 받는데, 이 문제는 단순하게 해결이 안되어 Divide & Conquer를 사용하고 싶음
단계 1 : Divide
- 인풋 x를 x1, x2로 나눈다.
단계 2: Conquer, 부분문제를 정복한다.
- 부분 문제를 해결하기 위해 f(x1)과 f(x2)를 한다. 이렇게 해서 A라는 답과 B라는 답이 나왔다고 가정
- f(x1)이 너무 크면 또 1~3단계를 반복한다.
단계 3: Combine, 최종 계산
- 부분 문제를 각각 정복해서 솔루션 두 개가 나왔는데, 마지막으로 Combine 단계에서는 그 두 솔루션 A와 B를 이용해서 기존 문제를 해결하는 f(x)를 계산하면 됨
'IT 일반 > 자료구조(개념) - [인강] 코드잇, [대학원] 전공 수업' 카테고리의 다른 글
[코드잇-알고리즘2 : 알고리즘 패러다임] 4. Greedy Algorithm (3) | 2024.12.14 |
---|---|
[코드잇-알고리즘2 : 알고리즘 패러다임] 3. Dynamic Programming (2) | 2024.12.14 |
[코드잇-알고리즘2 : 알고리즘 패러다임] 1. Brute Force(무차별 대입 공격) (0) | 2024.12.14 |
[대학원-자료구조 7~] Hash Table : an example of dictionary (0) | 2024.10.21 |
[대학원-자료구조 6] MST : Kruskal's Alg., Prim's Alg. (1) | 2024.10.21 |