[알고리즘] 백트래킹(Backtracking)
·
공부/알고리즘
☑️ 백트래킹(Backtracking)해를 찾다가 더 이상 진행할 수 없으면, 다시 뒤로(Back) 돌아가서 해를 찾는 방법을 의미한다.수학과 친하지 않기 때문에 다른 방식으로 설명하면 모든 조합의 수를 탐색하지만, 조건이 맞는 경우만 탐색한다. 조건에 부합하지 않으면 제외한다.  ☑️ DFS / BFS랑은 무슨 관계인가?백트래킹에 관련된 키워드로 DFS와 BFS를 들을 수 있다. 백트래킹 알고리즘은 DFS와 BFS 알고리즘과 무슨 관계에 있을까? 별 것 없다. DFS와 BFS 알고리즘을 통해서 백트래킹을 구현할 수 있다. 백트래킹은 일종의 추상적인 개념과 같다면, DFS와 BFS는 추상적인 개념을 기법으로 정의해둔 것이다. 우리가 여기까지 알았다면 이제 이렇게 말할 수 있다.아! 백트래킹 문제니까 DF..
[알고리즘] 재귀란 무엇인가?
·
공부/알고리즘
☑️ 재귀란 무엇인가?드디어 블로그에 재귀를 포스팅한다. 짧은 크래프톤 정글 기간에 나를 많이 괴롭혔던 이론이다. 재귀란 무엇인가? 간단하고 쉽다. 재귀는 자기 자신을 참조하는 알고리즘이다. 어? 자기 자신을 참조한다고? 이게 무슨 의미지? 싶다면 아래 사진을 보자. 재귀의 이론 자체는 어렵지 않다. 정말 그대로 자기 자신을 참조하는 알고리즘이 전부이기 때문이다. 사실 프로그래머는 코드로 이해하는 게 더 빠를 수 있다. 바로 팩토리얼을 구하기 위해서 재귀를 사용한 예시를 보자.def factorial(a : int) -> int: if a  팩토리얼은 정수 1부터 N까지 곱한 연산을 결과로 반환한다. 수학적으로는 다음과 같이 표기하고 연산한다.5! (5 팩토리얼) // 5 * 4 * 3 * 2 * ..
[알고리즘] #1. A* 알고리즘을 알아보자
·
공부/알고리즘
01. A* 알고리즘이란?A* 알고리즘은 경로 값과 휴리스틱 값을 사용해서 최단 경로를 탐색한다. Dijkstra 알고리즘의 단점을 보완하여 만들어진 알고리즘이며, 길을 찾기 위한 동작에서 대표적으로 사용되는 알고리즘이다. 탐색 공간인 Graph가 존재하며, 각 지점을 의미하는 Node와 지점을 서로 연결하는 Edge로 이루어지며, f(n) = g(n) + h(n) 공식을 따라서 최단 경로를 탐색한다. 02. 휴리스틱이란?A* 알고리즘에서 휴리스틱 함수라고 불리우는 것은 컴퓨터 공학에서만 사용되는 것이 아니다. 기존 휴리스틱 이론을 컴퓨터 공학에서도 사용하는 것이다. 휴리스틱 이론은 경험에 기반하여 문제를 해결하는 것을 의미한다. 간단하게 설명하면 개인의 직관으로 판단하는 방법을 말한다. 03. 어떻게 ..