[백준 - JAVA] 2470번 : 두 용액
·
Algorithm/Algorithm Problem
https://www.acmicpc.net/problem/2470 2470번: 두 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00 www.acmicpc.net 문제를 파악하면서 투 포인터라는 것을 알고 분석을 해봤다. 2
[그래프/트리 - 응용] Union-Find / 서로소 집합
·
Algorithm/응용
Union-Find란? 백준 문제를 풀 때 DFS로 풀었던 문제를 다른 사람들은 Union-Find로 풀었길래 정리. 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net Union-Find 알고리즘 대표적 그래프/트리 알고리즘으로 '합집합 찾기'라는 의미를 가지고 있다. 상호 배타적 집합(Disjoint-set)이라고도 하며 서로소 집합으로 불린다. 서로소인 부분 집합의 표현 여러 노드가 존재할 때, 두 개의 노드를 선택해서, 현재 두 노드가 서로 같은..
[이분탐색 - 응용] parametric search 개념 및 문제 풀이
·
Algorithm/응용
백준 1654 - 랜선 자르기 문제본문 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 개요 parametric search는 이진 탐색의 원리를 이용해서 최적의 해를 구하는 방법이다. 최적화 문제를 결정 문제로 바꾸어 푸는 것이다. 정렬된 어떠한 리스트에서 탐색 기준을 결정해 놓고 특정 위치에서 기준에 만족하지 않는 다면 그 아래있는 위치들도 모두 기준에 통과하지 못할 것이라는 확신으로 문제를 해결하는 것이다. O(logN + a)의 시간 복잡도를 가진 parametric sea..
[알고리즘-기초] 완전 탐색, 브루트 포스(Brute Force)
·
Algorithm/Basic
완전 탐색, 브루트 포스란?Brute Force의 사전적 의미를 보면 다음과 같다. brute: 무식한 +  force: 힘    무식한 힘으로 해석할 수 있다. 즉, 가능한 모든 경우의 수를 모두 탐색하면서 요구조건에 충족되는 결과만을 가져온다.이 알고리즘의 강력한 점은 예외 없이 100%의 확률로 정답만을 출력한다.  장점알고리즘을 설계하고 구현하기 쉽다.복잡한 알고리즘 없이 빠르게 구현할 수 있다.   단점알고리즘 실행 시간이 매우 오래 걸린다.메모리 효율 쪽으로 매우 비효율적이다.  종류 브루트 포스는 기본 구조는 크게 선형 구조와 비선형 구조로 나눌 수 있다. 선형 구조 : 순차 탐색비선형 구조 : 깊이 우선 탐색(DFS), 너비 우선 탐색(BFS)심화 : 백트래킹(재귀)백트래킹과 DFS, BF..
최단 경로 알고리즘 (다익스트라 알고리즘, 벨만-포드 알고리즘, 플로이드-워셜 알고리즘)
·
Algorithm/Basic
최단 경로(Shortest Path) 알고리즘이란? 가장 짧은 경로를 찾는 알고리즘, '길 찾기' 문제로 불린다. 문제를 그래프로 표현하고 각 지점을 노드, 지점간 연결된 도로는 간선이라 한다. 최단 경로 알고리즘에는 그리디 알고리즘과 다이나믹 프로그래밍이 그대로 적용된다. 다양한 사례가 존재하며, 상황에 맞는 효율적인 알고리즘이 이미 정립되어 있다. 문제 형태가 정형화되어 있기 때문에 구현 부분은 비슷함 문제에 따른 외적인 조건만 챙겨서 풀이 ex) 한 지점에서 다른 특정 지점까지 최단 경로 구하기, 모든 지점에서 다른 모든 지점까지 최단 경로 구하기 등 1) 최단 경로 문제의 종류 단일 출발 (single-source) 최단 경로 어떤 하나의 정점에서 출발하여 나머지 모든 정점 까지의 최단 경로를 찾..
탐욕법(Greedy Algorithm)
·
Algorithm/Basic
이것이 코딩 테스트다 with 파이썬 정리 및 추가 내용 Greedy Algorithm이란? 그리디 알고리즘(욕심쟁이 알고리즘, Greedy Algorithm)이란 "매 선택에서 지금 이 순간 당장 최적인 답을 선택하여 적합한 결과를 도출하자"라는 모토를 가지는 알고리즘 설계 기법이다. 예를 들어 5개의 도시를 모두 한번씩만 거쳐서 여행하는 경로 중 기름값을 아끼기 위해 가능하면 짧은 경로를 이용하고 싶다고 가정하자. 이 문제를 해결하기 위해 몇 가지 전략을 사용할 수 있다. 가능한 120가지의 조합을 모두 살펴봐서 그중 가장 짧은 경로를 선택하는 것도 하나의 전략이 될 것이다. 그러한 다양한 방법 중, 그리디 알고리즘을 사용한다는 것은 "지금 내가 있는 도시에서 고를 수 있는 도로 중 가장 짧은 도로를..