알고리즘 17

<힙과 우선순위 큐> 개인적 정리

혹시 힙과 큐에 대해 궁금하셔서 다른 곳에서 유입되신거라면 죄송합니다.. 메모장으로 개인적으로 정리한 그대로를 개인 공부를 위해 올리기 때문에 이해하시기에 굉장히 불편하실 수 있습니다. 일반적인 큐(Queue)는 First in-First Out 즉 먼저들어간 자료가 먼저 나오는 구조 반면, 우선순위 큐는 들어간 순서에 상관없이 우선순위가 높은 데이터가 먼저 나오는것 우서순위 큐는 힙(heap) 이라는 자료구조로 구현할수 있다. 일반적인 list를 통해 우선순위를 비교해가며 자료를 추가하면 시간복잡도의 최악의 경우를 나타내는 big-O 표기법에 의해 n개의 자료를 모두 하나씩 비교해야하는 경우가 생길 수 있으므로 O(n) 의 시간복잡도를 갖는다 complete Binary Tree 완전 이진트리 구조 부..

<그래프 알고리즘 BFS, DFS, 델타함수> 개인적인 정리

https://han-py.tistory.com/242 [코딩테스트] 쉽게 이해하고 바로 쓰는 DFS (깊이 우선 탐색) DFS (깊이 우선 탐색) DFS 깊이 우선 탐색은 코딩테스트에서 기본적으로 알아야한다. DFS란 말 그대로 깊이를 우선적으로 탐색하는 방법이다. 좀 더 쉽게 말하면, 갈림길이 있다면 한방향으로 끝까 han-py.tistory.com 그래프 알고리즘의 사실 핵심은 스택과 큐 인데 이를 자꾸 간과하는 느낌이 든다. 풀 때 마다 떠오르지 않아 고생하는 것들이 이렇게 두가지인 것 같다. 경우의 수를 어떻게 담을지, 어떻게 이어 나갈지를 생각할 때 항상 모든 경우의 수를 필요에 따라 스택 또는 큐로 기록해 두는 것이 중요한 것 같고. 델타함수를 이용할때는 visit 를 두어 방문여부를 항상 ..

union_find, return 없는 def, global 배울점 많은 코드

level3 - 표병합(kakao) 1. def () : -> none : 주석처리 2. global 함수를 통해 다른 함수에서 parant def find(r: int, c: int) -> list: if parent[r][c] != (r, c): nr, nc = parent[r][c] parent[r][c] = find(nr, nc) return parent[r][c] def update1(r: int, c: int, v: str) -> None: root = find(r, c) for i in range(n): for j in range(n): if find(i, j) == root: table[i][j] = v def update2(v1: str, v2: str) -> None: for i in ..

<union-find 알고리즘> 개인적인 정리

프로그래머스 - 표병합(level3) 에 사용하기 때문에 찾아본 개념 https://gmlwjd9405.github.io/2018/08/31/algorithm-union-find.html [알고리즘] Union-Find 알고리즘 - Heee's Development Blog Step by step goes a long way. gmlwjd9405.github.io Union-Find(혹은 Disjoint Set)은 상호 배타적으로 이루어진 집합을 효율적으로 표현하기 위해 만들어진 자료구조이다. 이 자료구조가 서로 다른 두 개의 집합을 병합하는 Union 연산과 집합의 원소가 어떠한 집합에 속해있는지 판단하는 Find 연산을 지원하기 때문에 Union-Find라는 이름이 붙게 되었다. 1964년 처음 고안..

<이진 트리 구조> 참고 사이트 정리 (완전 이진 트리, 포화 이진 트리)

https://codingdog.tistory.com/entry/%EC%99%84%EC%A0%84%EC%9D%B4%EC%A7%84%ED%8A%B8%EB%A6%AC-vs-%ED%8F%AC%ED%99%94%EC%9D%B4%EC%A7%84%ED%8A%B8%EB%A6%AC-%EC%9D%B4-%EB%91%98%EC%97%90-%EB%8C%80%ED%95%B4-%EC%95%8C%EC%95%84%EB%B4%85%EC%8B%9C%EB%8B%A4 완전이진트리 vs 포화이진트리 : 이 둘에 대해 알아봅시다. Heap, 다른 말로 우선 순위 큐 알고리즘을 배우기 전에, 완전이진트리와 포화이진트리에 대해서 짚고 넘어가도록 하겠습니다. 트리에 대해서 이론적으로만 설명하면 재미가 없으니, 나올 때 마다 codingdog.tist..

코딩테스트 준비 기록(요일 기록)

(시작기록) > 23년 1월 25일 까지 기록 코드업 Python 기초 100제 (완) 프로그래머스 : 문제해결 19 (LEVEL 2 위주) 백준 solved : 브론즈 2 (브론즈 9, 실버 9) 최종목표 : 카카오 코테 풀 수 있을정도 실력 유지 계획 : 하루 2문 1. 프로그래머스 level 1, level 2 완독 2. 프로그래머스 좋은 코딩 모방, 공부 3. 백준 골드 완독 이후 플레 문제 시도 (중간기록) > 23년 2월 23일 기록 프로그래머스 점수 : 1,260점 해결한 문제 : 35개 1. 프로그래머스 level 2문제는 다 풀어봤다. 2. level 3 문제를 다루고 있으나, 대부분 히든 테케 일부에서 막히는 느낌이 든다. 시간도 굉장히 많이 들고. 3. 푼 문항수, 점수가 상대적으로 ..