https://www.acmicpc.net/problem/23968알고리즘 분류 : 구현, 정렬, 시뮬레이션 ❓문제🔅해석비교 기반 정렬 알고리즘인 버블 정렬을 활용하는 문제이다.버블 정렬은 양옆에 위치한 두 값을 비교하면서 크기 순으로 정렬한다. 그 동안은 전역변수, 지역변수 신경 쓰지않고 작성했지만 이제부터 ChatGPT-4o에게 코드리뷰를 받고 코딩 습관을 고치려고 한다. 코드리뷰 전 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;//백준 23968번public class Main { static int N, K; stati..
다익스트라 알고리즘 (Dijkstra's Algorithm)음이 아닌 가중 그래프에서의 단일 쌍, 단일 출발, 단일 도착 최단 경로 문제시작점이 있고, 모든 노드로 최단 거리를 구할 때인접 리스트 사용PQ로 최소 cost 뽑으면서 정점을 방문하여 최단 거리 갱신음의 간선이 없으므로 각 노드에 최초 방문 시 최단 거리를 확정한다. (방문 체크 필요) 동작 원리시작 정점 설정시작 정점을 선택하고, 이 정점에서 다른 모든 정점으로의 최단 거리를 저장할 배열을 초기화한다. 시작 정점의 거리는 0으로 설정하고, 나머지 정점의 거리는 무한대로 설정한다.방문하지 않은 정점 중 최단 거리 정점 선택한다.인접한 정점들의 거리 갱신선택한 정점의 인접한 정점들에 대해, 현재 정점을 거쳐 가는 것이 더 짧은 경로라면, 그 ..
https://www.acmicpc.net/problem/2458알고리즘 분류 : 그래프 이론, 그래프 탐색, 깊이 우선 탐색, 최단 경로, 플로이드–워셜❓문제🔅해석모든 학생의 키를 비교한 횟수를 알아야하기 때문에 전체 쌍의 계산이 필요한 "플로이드-워셜" 알고리즘을 사용한다. 1. 거리 초기화 만약 두 정점 간에 직접 연결된 간선이 있다면 그 가중치로 초기화하고, 연결되어 있지 않다면 무한대(또는 매우 큰 값)로 설정한다. 자신에게 가는 거리는 0으로 설정한다.for (int n = 1; n 2. 동적 프로그래밍(DP) 적용 각 정점을 중간 정점으로 고려하여, 다른 모든 정점 쌍에 대해 최단 경로를 갱신한다. 즉, 정점 k를 중간 정점으로 사용하는 경우, i에서 j로 가는 경로가 i -> k ->..