developer
-
[알고리즘 정리] Union-Find(유니온 파인드)Development/Algorithm 2020. 5. 3. 17:29
다룰 내용 서로소 집합이란 무엇인가? 상호 배타 집합을 표현하는 방법 Union Find 구현 서로소 집합(Disjoint-set)이란? 서로소 또는 상호 배타 집합들은 서로 중복되는 원소가 없는 집합을 말합니다. 상호 배타 집합을 표현하는 방법 연결 리스트로 구현 트리로 구현 상호 배타 집합 연산 Make-set(x) : 집합을 만드는 동작입니다. Find-set(x) : x가 속한 집합을 찾는 동작입니다.(이때 해당 원소의 대표자를 반환합니다.) Union(x, y) : 두 집합의 원소를 주고 합치는 동작입니다. 상호 배타 집합 - 연결리스트 구현 같은 집합의 원소들은 하나의 연결리스트로 관리합니다. 연결리스트의 맨 앞의 원소를 집합의 대표 원소로 생각해봅니다. 따라서 각 원소는 집합의 대표 원소를 ..
-
[자료구조] Graph(그래프)Development/Data Structure 2020. 5. 3. 16:56
다룰 내용 그래프란 무엇인가? 그래프의 종류 그래프를 표현할 수 있는 방법 그래프란 무엇인가? 정점들의 집합과 이들을 연결하는 간선들의 집합으로 구성된 자료구조를 의미합니다. 그래프의 종류 무향그래프: 간선의 방향이 없는 그래프입니다. 유향그래프: 간선의 방향이 있는 그래프입니다. 가중치 그래프: 정점에서 정점으로 이어진 간선에 가중치가 있는 그래프입니다. 사이클이 없는 방향 그래프(DAG, Directed Acyclic Graph): 사이클이 존재하지 않는 유향 그래프를 말합니다. 완전 그래프: 정점들에 대해 가능한 모든 간선들을 가진 그래프입니다. M개의 정점을 가지는 완전 그래프는 최대 M(M - 1) / 2 간선 수를 가집니다. 부분 그래프: 원래 그래프에서 일부의 정점이나 간선을 제외한 그래프입..
-
[백준] 16236_아기 상어(java)Problem Solving/BOJ 2020. 4. 8. 00:47
https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가지고 있고, 이 크기는 자연수이다. 가장 처음에 아기 상어의 크기는 2이고, 아기 상어는 1초에 상하좌우로 인접한 한 칸씩 이동한다. 아기 상어는 자신의 크기보다 큰 물고기가 있는 칸은 지나갈 수 없고, 나머지 칸은 모두 지나갈 수 있다. 아기 상어는 자신의 크 www.acmicpc.net 문제 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에..
-
[알고리즘 정리] 재귀Development/Algorithm 2020. 4. 8. 00:19
다룰 내용 재귀란 무엇인가? 재귀를 구현할 때 주의할 점 Factorial Fibonachi 재귀란 무엇인가? 자신의 메소드 내부에서 자신의 메소드를 호출하는 것 재귀를 구현할 때 주의할 점 1) 메소드의 역할을 명확히 해야 함. 2) 자신이 해야할 일과 나머지 작업으로 분리해야 함. 3) 기저 조건이 반드시 있어야 함. (재귀 탈출 조건) -> 기저가 없으면 스택 오버 플로우 발생 4) 재귀의 깊이를 생각해야 함. (상태 공간 트리 활용) 5) 깊이뿐만 아니라 수행시간도 고려해야 함. Factorial 5! -> 5 * 4 * 3 * 2 * 1 => 이는 5 * 4! 형태로 이해할 수 있음. => 또 5 * 4 * 3! 형태로도 이해할 수 있음. => 5 * 4 * 3 * 2! 형태 => 5 * 4 *..