Programming/Algorithm 3

[알고리즘] 버블정렬(Bubble Sort)

버블 정렬 (Bubble Sort)버블 정렬이란, 인접한 두 개의 원소를 비교하여, 크기가 순서에 맞지 않는다면 서로 교환(Swap) 하는 과정을 반복하여 정렬하는 알고리즘이다.한 사이클이 끝날 때 마다 가장 큰(또는 작은) 원소가 끝에 위치하게 되는 모습이 거품이 올라오는 것과 유사하다 하여 버블 정렬이라 함시간복잡도 : O(N^2) 버블 정렬 과정N 크기의 배열의 처음부터 끝까지 인접 원소를 짝지어 비교비교한 두 원소의 순서가 잘못 되어 있다면 교환 -> 오름차순, 내림차순한 사이클이 끝나면 배열의 마지막 인덱스에서 가장 '크거나' '작은' 원소가 위치범위를 줄여나가면 N-1 번 정도 반복 수행하면 정렬 완료1번째 사이클2번째 사이클3번째 사이클4번째 사이클정렬 완료버블 정렬 Java 코드public..

나머지 연산 분배 법칙 (모듈로 연산/Modulo operation)

나머지 연산은 두 수를 나눈 뒤 남는 값을 구하는 연산입니다. 예를 들어, 10 mod  3 = 1 은 10을 3으로 나눴을 때 몫은 3이고 나머지는 1이 된다는 뜻입니다. 나머지 연산의 분배 법칙모듈러 연산에서는 아래와 같은 분배 법칙이 성립합니다. 이를 활용하면 큰 수의 계산도 효율적으로 처리할 수 있습니다.덧셈 분배 법칙 (𝒂 + 𝒃) mod 𝒎 = [(𝒂 mod 𝒎) + (𝒃 mod 𝒎)] mod 𝒎 곱셈 분배 법칙(𝒂 𝗑 𝒃) mod 𝒎 = [(𝒂 mod 𝒎) 𝗑 (𝒃 mod 𝒎)] mod 𝒎뺄셈 분배 법칙(𝒂 - 𝒃) mod 𝒎 = [(𝒂 mod 𝒎) - (𝒃 mod 𝒎) + 𝒎] mod 𝒎(뺄셈 결과가 음수일 경우 m을 더해 양수로 만듭니다.)..

[알고리즘] DFS 와 BFS

DFS(Depth First Search)DFS는 깊이 우선 탐색으로, 그래프의 한 노드에서 시작해서 가장 깊은 경로를 우선적으로 탐색하고 더이상 탐색할 곳이 없다면 되돌아오는 방식이다.모든 경로를 전부 탐색해야하거나, 특정 조건을 만족하는 경로를 찾을 때 사용하며, 스택(Stack) 또는 재귀 호출을 사용한다.방문한 경로는 기록해야하기 때문에 방문여부를 체크하는 배열이 필요로 한다. 예시(재귀)public class Main { public static List> graph = new ArrayList(); public static boolean[] visited; public static void dfs(int node) { visited[node] = true; //방문..