자료구조5 이진 트리 트리와 터미널로지 트리 구조 자료의 계층적인 성질을 토식으로 표현하는 방법 Etc): 조직도, 토너먼트, 카테고리, 파일 시스템, etc… 루트가 있는 트리 트리 구조를 노드와 간선의 집합으로 표현한 것 (일반적인 트리)트리 루트가 없는 트리 → 사이클이 없고 방향이 없고 연결된 그래프 → 트리에는 루트가 없지만 루트를 정하면 루티드 트리가 된다. 노드 유닛, 노드 혹은 버텍스라고 부른다. 간선 두 노드 사이에 있는 연결, 엣지 혹은 아크라고 부른다. 부모 노드 노드 X의 부모 노드는 X와 간선으로 연결된 노드 중 루트에 더 가까운 노드 자식 노드 노드 X의 부모 노드는 X와 간선으로 연결된 노드 중 루트에서 더 멀리있는 노드 단말 노드 자식이 없는 노드, 리프 노드라고 한다. 내부 노드 단말 노드가 아.. 2023. 4. 8. 12/18 WIL 1. 알고리즘 관련 공부 이번 주는 공부했던 알고리즘 지식을 정리하려 한다. BFS(Breadth First Searching) 너비 우선 탐색 너비 우선 탐색으로 상태트리나 다른 그래프에 있어 같은 레벨에 있는 노드를 우선 적으로 탐색하는 알고리즘이다. BFS를 사용할 때는 큐(선입선출) 자료구조를 사용하여 현재 노드를 popleft()하고 현재 노드와 연결된 다음 노드들을 append 한다. DFS()와의 차이점은 DFS는 한 루트(시작 노드부터 끝 레벨의 노드까지)를 중점으로 가지 치기를 하는데 사용한다는 점이다. 반면 BFS() 현재 노드와 가장 가깝게 연결된 다음 노드들을 레벨 별로 묶어서 최단 경로 찾기와 같은 좌표 이동에 주로 사용한다. BFS()는 좌표 관련 문제에서 꽤나 자주 사용하는 편.. 2022. 12. 18. 10/30 WIL 1. 알고리즘 관련 공부 이번 주는 공부했던 알고리즘 지식을 정리하려 한다. 큐 선입출 방식 전 데이터를 저장하고 주어진 순서에 따라 순서를 바꾸지 않고 해결할 때 가장 사용을 많이 하는 자료구조다. 문제에서 원이나 순서, 입력 순서 등의 키워드가 언급될 때 처음 순서를 저장하고 싶을 때 쓴다. 파이썬의 경우 큐는 collection의 deque를 이용, popleft() 등을 통해 구현이 가능해서 리스트를 쓴다. 보통 in 함수를 사용해서 if의 조건문을 구성해서 이것이 있는지 없는지 체킹하는 방식이 주류다. 예제) 교육과정 설계(큐) 현수는 1년 과정의 수업계획을 짜야 합니다. 수업중에는 필수과목이 있습니다. 이 필수과목은 반드시 이수해야 하며, 그 순서도 정해져 있습니다. 만약 총 과목이 A, B,.. 2022. 10. 30. 08/21 WIL 1. 알고리즘 공부 시작 이번 주는 본격적으로 알고리즘 공부를 시작했다. 내가 이번 주에 알게 된 알고리즘들을 유형별로 정리하려 한다. 어떤 알고리즘으로 풀어야할까 - 알고리즘의 선택의 기준이 되는 시간 복잡도 코딩 테스트의 핵심 중 하나는 문제마다 주어진 시간 복잡도를 고려해 적절한 알고리즘을 선택하는 것이다. 처음에 알고리즘을 잘못 선택하면 아무리 코드를 잘 자려고 노력해도 좋은 결과를 거두기 어렵다. 문제를 본격적으로 풀어보기 전에 시간 복잡도를 활용할 줄 알아야한다. 일반적으로 알고리즘의 수행시간은 1억 번의 연산을 1초의 시간으로 간주하여 예측한다. 예를 들어 버블 정렬은 O(n^2)의 시간 복잡도를 갖고 있고 병합 정렬은 O(nlogn)의 시간 복잡도를 가진다. 수 정렬 문제가 나왔을 때 N의.. 2022. 8. 21. 이전 1 2 다음