HWI's Devlog
article thumbnail
DFS & BFS 알고리즘 (깊이/너비 우선 탐색 알고리즘)
Dev/Algorithms 2022. 12. 27. 14:04

사전 지식 - 스택, 큐, 재귀 함수에 대해 알고 있어야 합니다. 나중에 관련 블로그 글을 쓰게 된다면 수정하겠습니다. 💡그래프 탐색이란? - 그래프 코드로 구현하기 DFS/BFS 알고리즘은 그래프 탐색에 사용되는 알고리즘입니다. DFS/BFS에 대해 알아보기 전에 그래프 탐색이 무엇인지 알아야겠지요. 그래프는 정점(node)과 간선(edge)로 이루어진 자료구조를 의미합니다. 쉽게 정점은 도시들로, 정점을 연결하는 간선은 도시와 도시 사이를 이어주는 도로라고 생각해봅시다. 그래프 탐색이란 하나의 노드를 시작으로 다수의 노드를 방문하는 것을 말합니다. 그리고 두 노드가 간선으로 연결되어있는 것을 '두 노드는 인접하다.'라고 표현합니다. 위에서는 그림을 그려서 그래프를 표현했는데요, 그렇다면 알고리즘 문제..

article thumbnail
그리디 알고리즘 (Greedy Algorithm, 탐욕법)
Dev/Algorithms 2022. 12. 26. 16:20

💡 그리디 알고리즘 (Greedy Algorithm) 이란? 그리디 알고리즘은 어떤 문제를 '탐욕적'으로 푸는 알고리즘입니다. 여기서 '탐욕적'이라는 말은 '현재 상황에서 지금 당장 좋은 것만 고르는 방법'을 의미합니다. 즉, 선택을 해야 할 때마다 당장 눈앞에 놓인 최적의 상황만을 선택하여 해답에 도달하는 방법입니다. 최적의 상황에 대한 기준이 필요하므로, 그리디 알고리즘으로 풀 수 있는 문제들은 '가장 큰 순서대로', '가장 작은 순서대로 '같은 기준을 알게 모르게 제시해 줍니다. 대체로 이 기준은 정렬 알고리즘을 사용했을 때 만족시킬 수 있습니다. 순간마다 하는 최선의 선택이 늘 최선의 결과를 보장해주지는 않습니다. 아래의 예시 그림에서, 선택지들을 합한 가장 큰 수를 찾는다고 가정해보겠습니다. 이..