본문 바로가기

알고리즘39

다익스트라 알고리즘(Dijkstra's Algorithm) 다익스트라 알고리즘은 그래프의 시작점에서 모든 노드까지의 최단 경로를 찾는 알고리즘입니다. 알고리즘 아이디어 다익스트라의 알고리즘의 아이디어는 '최단거리는 최단거리들의 합으로 이루어져있다.' 라는 그리디(Greedy)한 생각에서 출발합니다. 동작 과정 - 방문하지 않은 점들 중 값이 가장 작은 점을 방문한다. - 방문한 점을 통해서 갈 수 있는 점들 중, 아직 방문하지 않은 점의 값이 이전에 기록한 값보다 작을 시(거리가 더 짧을 시), 거리를 갱신한다. 주의 사항. 다익스트라는 모든 가중치(값)가 음수가 아닐 경우에만 사용할 수 있습니다. 예시) 1번 노드에서 갈 수 있는 모든 점에 대해 최단거리 구하기 1. 초기화 1.1 초기 시작점(1번 노드)을 0으로 초기화. 1.2 나머지 점들을 무한대로 초기화.. 2021. 9. 12.
[BOJ/백준] 10451번 - 순열 사이클 문제 https://www.acmicpc.net/problem/10451 10451번: 순열 사이클 1부터 N까지 정수 N개로 이루어진 순열을 나타내는 방법은 여러 가지가 있다. 예를 들어, 8개의 수로 이루어진 순열 (3, 2, 7, 8, 1, 4, 5, 6)을 배열을 이용해 표현하면 \(\begin{pmatrix} 1 & 2 &3&4&5&6&7&8 \\ 3 www.acmicpc.net 문제 요약 위 그림과 같이, 시작점에서 출발하여 다시 시작점으로 돌아오는 사이클의 개수를 구하는 문제이다. CODE #include using namespace std; const int mxN=1e5; int n, to, adj[mxN]; bool vis[mxN]; void dfs(int u) { vis[u] = tr.. 2021. 8. 23.
[BOJ/백준] 11053번 - 섬의 개수 문제 https://www.acmicpc.net/problem/4963 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net 문제 요약 0과 1로 주어진 지도에서 섬의 개수(숫자 : 1)를 센다. 이때, 방향은 8방향 모두 가능하다. CODE #include using namespace std; const int mxN=50; int n, m, a[mxN+1][mxN+1]; bool vis[mxN+1][mxN+1]; int dx[8] = {1, -1, 0, 0, 1, 1, -1, -1}; int dy[8] =.. 2021. 8. 23.
[C++] set::lower_bound() 함수 원문 : https://www.geeksforgeeks.org/set-lower_bound-function-in-c-stl/ set lower_bound() function in C++ STL - GeeksforGeeks A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions. www.geeksforgeeks.org set::lower_bound()은 C++ STL 내장함수이다. 매개 변.. 2021. 7. 25.
[BOJ/백준] 11053번 - 가장 긴 증가하는 부분 수열 가장 긴 증가하는 부분 수열 문제 https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net CODE #include using namespace std; const int mxN=1e3, mxA=1e3; int n, a[mxN+1]; int dp[mxA+1]; int main() { cin >> n; for(int i=0; i>a[i]; } int ans=0; for(int .. 2021. 7. 21.
728x90
반응형