본문 바로가기
반응형

코딩log/Algorithm2

[알고리즘/Java]다이나믹 프로그래밍(Dynamic Programming) 다이나믹 프로그래밍(Dynamic Programming)은 Divide and Conquer(분할정복) 기법과 같이 문제를 작은 부분 문제로 나누어 그 해를 결합해 문제를 해결하는 것이다. 어떤 문제를 점화식으로 표현할 수 있다면, 대부분 Dynamic Programming을 사용하여 문제를 해결할 수 있다. 다이나믹 프로그래밍(Dynamic Programming) 다이나믹 프로그래밍과 분할정복 먼저 분할정복(Divide and Conquer)과 다이나믹 프로그래밍의 차이점을 알아보자. 분할정복의 경우 분할 문제들이 서로 겹치지 않는다. 각각의 다른 부분 문제를 해결하고 그 결과를 결합하는 것이다. 다이나믹 프로그래밍은 부분 문제가 각각의 부분 문제를 가진다. 즉, 다이나믹 프로그래밍은 문제를 다음과 같.. 2023. 6. 4.
[알고리즘/Java]그래프와 DFS, BFS 탐색 알고리즘 탐색 알고리즘은 입력으로 주어진 그래프를 탐색하고, 그 "구조"를 파악하는 알고리즘이다. 수많은 흥미로운 문제가 그래프로 표현 가능하기 때문에, 그래프를 탐색하고 구조를 파악하는 건 중요하다. 그럼 먼저 그래프를 표현하는 방식에 대해서 알아보자. 그래프와 DFS, BFS 탐색 알고리즘 그래프의 표현 그래프를 표현하는 방법은 대표적으로 두 가지 방식이 있다. 첫 번째는 Linked List를 이용하는 방식이고, 또 다른 방식은 인접 행렬을 이용하는 방식이다. Linked List 방식은 노드에 연결된 다른 노드들을 Linked List로 연결시킨 것이고, 인접 행렬 방식은 노드가 다른 노드에 연결되어 있는지 여부를 행렬로 표시한 것이다. 따라서 자료구조를 인접행렬을 사용하여 그래프를 표시하는 것이 구현에는.. 2023. 5. 27.
반응형