목록알고리즘 (2)
꼬물꼬물
처음에 Set을 사용했는데 원소값은 중복이 될 수 있다! 문제를 천천히 읽고 풀자 정규표현식 (.*)[^A-Z](.*) ()는 괄호 안의 문자를 하나의 문자로 인식 .은 임의의 한문자 *는 문자가 0번 이상 발생 (.*)은 임의의 한문자가 앞에 나올 수 있다를 의미한다. [^A-Z]는 모든 문자를 toUpperClass()로 올렸기 때문에 A-Z의 범위가 아닌 문자를 찾는다. 임의의 문자 s에 대해 s.matches("(.*)[^A-Z](.*)")는 s 문자에 A-Z범위가 아닌 문자가 있을 경우 true를 반환한다. 영문자 이외의 문자를 제외하기 위해 사용 package 연습문제; import org.junit.jupiter.api.Assertions; import java.util.HashMap; im..
최단경로: 간선의 가중치가 있는 두 정점사이의 경로들 중에 간선의 가중치의 합이 최소인 경로 - 하나의 시작 정점(고정) 1. 다익스트라: 음의 가중치 X 2. 벨만포드: 음의 가중치 O 도착점 도착시 가중치의 합으로 비교해야 한다. 모든 경로를 확인한다. Dijkstra - 시작 정점에서 거리가 최소인 정점을 선택해 나가면서 최단 경로 구하는 방식 - 탐욕 기법을 사용한 알고리즘으로 MST의 프림 알고리즘과 유사하다. s: 시작 정점, A: 인접 행렬, D: 시작 정점에서의 거리 V: 정점 집합, U: 선택된 정점 집합 Dijkstra(s, A, D) U = {s}; FOR 모든 정점 v D[v] = A[s][v] WHILE U != V D[w]가 최소인 정점 w 왼쪽 포함 V-U를 선택 U