Algorithm

이번엔 DFS를 알아보도록하자. DFS란 한국말론 깊이우선 탐색(Depth First Search)이다. 깊이우선탐색은 무엇인가.. 무언가 탐색을 할때 동일한 레벨의 노드를 탐색을 먼저 하는것이 아니라 아랫레벨의 노드를 우선 탐색하는 시스템이다. 역시 말로는 이해가 안가니... 이미지로...... 사진과 같은 트리가 존재할때 깊이우선의 경우에 이렇게 순회하게된다.(우측, 좌측의 순서는 없음) A -> B -> H -> M -> J -> K -> L -> I -> C -> D -> G -> E -> F 대충 느낌이 팍 오죠? 그럼 어떤식으로 구현하면 될지 생각을 해보면... stack 구조를 이용해서 노드를 추가한 후 추가한 노드를 다시 탐색하고 추가한 노드를 다시 탐색하고 하면 깊이 우선이 가능!!!! ..
이번엔 BFS를 알아보도록하자. BFS란 한국말론 너비우선 탐색(Breadth First Search)이다. 너비우선탐색은 무엇인가.. 깊이와 반대다... 무언가 탐색을 할때 추가된 노드를 우선적으로 탐색하는것이 아니라 이미 추가되어있는 노드를 우선적으로 탐색하는 것.. 역시 말로는 이해가 안가니... 이미지로...... (DFS와 동일한 노드) 사진과 같은 트리가 존재할때 깊이우선의 경우에 이렇게 순회하게된다. (우측, 좌측의 순서는 없음) A -> B -> C -> H -> D -> I -> J -> M -> E -> G -> K -> F -> L 대충 느낌이 팍 오죠? 그럼 어떤식으로 구현하면 될지 생각을 해보면... DFS의 경우 추가된 노드를 우선적으로 순회했지만.. 이번에는 이미 추가되어있는 ..
재귀함수에 대해 알아보자. 재귀함수란 자기 자신을 다시 호출한다는 의미.... 자기자신을 다시 호출하는데 파라미터를 바꿔가면서 호출한다. 여기서 무한정 자기자신을 호출할 수 있기에 종료조건은 필수로 필요하다. 그리하여 반복계산할수있도록 하는 것.. 이렇게만 말하면 헷갈리니..예제 코드를.. def factorial(n: int) -> int: # 종료조건 if n int: if x > y: return x else: return y def max_array(array: int, len: int) -> int: if len == 1: return array[0] else: return max(array[len - 1], max_array(array, len - 1)) temp_array = [33, 44,..
주지님
'Algorithm' 태그의 글 목록