[필수 알고리즘] 다익스트라 알고리즘(Dijkstra Algorithm) 이해
·
Back-End/알고리즘
다익스트라 알고리즘(Dijkstra Algorithm) 다익스트라 알고리즘은 음의 가중치(음의 간선, 음의 값)가 없는 그래프의 한 노드에서 각 모든 노드까지의 최단거리를 구하는 알고리즘을 말한다. 다익스트라 알고리즘은 두 꼭짓점 간의 가장 짧은 경로를 찾는 알고리즘이지만, 더 일반적인 변형은 한 꼭짓점을 "소스" 꼭짓점으로 고정하고 그래프의 다른 모든 꼭짓점까지의 최단경로를 찾는 알고리즘으로 최단 경로 트리를 만드는 것으로도 사용한다. 다익스트라 알고리즘은 그리디 알고리즘이자 다이나믹 프로그래밍 기법을 사용한 알고리즘이라고 볼 수 있다. 그리디 알고리즘과 다이나믹 프로그래밍 기법은 아래의 글에 포스팅되어있다. 그리디 알고리즘 https://cobi-98.tistory.com/44 [필수 알고리즘] 그리..
[필수 알고리즘] 그리디 알고리즘(Greedy Algorithm) 이해
·
Back-End/알고리즘
그리디 알고리즘 그리디 알고리즘(욕심쟁이 알고리즘, Greedy Algorithm)이란, "매 선택에서 지금 이 순간 당장 최적인 답을 선택하여 적합한 결과를 도출하자"라는 모토를 가지는 알고리즘 설계 기법이다. 그리디 알고리즘을 사용하면 매 선택이 그 순간에 대해서는 최적이지만 그걸 종합적으로 봤을 땐 최적이라는 보장은 절대 없다는 것을 명심해야 한다. 루트 노드부터 시작하여 거쳐 가는 노드 값의 최대로 구한다면, 값은 5+7+9 = 21로 다음과 같지만 거쳐가는 노드의 경우에서 가장 큰 값(최적의 값만) 구한다면, 값은 5+10+4 = 19 가 된다. 이처럼, 그리디 알고리즘은 최적의 값을 도출해내지 못하지만 최적해들의 집합이 곧 전체 문제의 해답이 될 때 사용할 수 있다. 그리디 알고리즘 기법 활용..
[백준 / Java] 7579번 토마토
·
코딩테스트/백준
사용한 알고리즘 (BFS) BFS https://cobi-98.tistory.com/36 [필수 알고리즘] BFS 너비 우선 탐색 (Queue 구조) 이해 BFS 너비 우선 탐색 (Breadth-First Search) 너비 우선 탐색(Breadth-first search, BFS)은 맹목적 탐색방법의 하나로 루트 노드(혹은 다른 임의의 노드)에서 시작해서 인접한 노드를 먼저 탐색한다. 그렇게 되 cobi-98.tistory.com 🔒 7579번 토마토 ✔ 문제 설명 🚩 요구사항 분석 토마토 생성자 추가 (VO) int [ ][ ][] M, N, H 상자(box) 생성 상하좌우로 이동할 수 있는 배열(dx, dy, dz) 생성 익은 토마토 queue에 추가 큐가 빌 때까지 반복 이동할수 있는 경로(상자에..
[백준 / Java] 14502번 연구소
·
코딩테스트/백준
사용한 알고리즘 (DFS, BFS) DFS https://cobi-98.tistory.com/30 [필수 알고리즘] DFS 깊이 우선 탐색 (Stack 구조) 이해 DFS 깊이 우선 탐색 (Depth-First Search) 깊이 우선 탐색 (DFS)는 하나의 순환 알고리즘으로 백트래킹에 사용하는 대표적인 탐색 알고리즘이다. 루트 노드(혹은 다른 임의의 노드)에서 시작해서 다음 분 cobi-98.tistory.com BFS https://cobi-98.tistory.com/36 [필수 알고리즘] BFS 너비 우선 탐색 (Queue 구조) 이해 BFS 너비 우선 탐색 (Breadth-First Search) 너비 우선 탐색(Breadth-first search, BFS)은 맹목적 탐색방법의 하나로 루트 노..
[백준 / Java] 1697번 숨바꼭질
·
코딩테스트/백준
사용한 알고리즘 (BFS) BFS https://cobi-98.tistory.com/36 [필수 알고리즘] BFS 너비 우선 탐색 (Queue 구조) 이해 BFS 너비 우선 탐색 (Breadth-First Search) 너비 우선 탐색(Breadth-first search, BFS)은 맹목적 탐색방법의 하나로 루트 노드(혹은 다른 임의의 노드)에서 시작해서 인접한 노드를 먼저 탐색한다. 그렇게 되 cobi-98.tistory.com 🔒 1697번 숨바꼭질 ✔ 문제 설명 🚩 요구사항 분석 이동할 수 있는 경우의 수 배열로 지정 시간을 세기 위한 변수 (배열) 🔑 문제풀이 해당 문제를 풀기 전 5-10-9-18-17 순으로 4초 만에 동생을 찾을 수 있다.라는 힌트를 보고 5-10-9-18-17는 5-4-8..