본문 바로가기

분류 전체보기

(644)
[10분 테코톡] 카프카의 탐색 알고리즘 https://youtu.be/By77aC9Oe3Q - 탐색 알고리즘 : 그래프의 모든 정점들을 특정한 순서에 따라 방문하는 알고리즘 그래프 - 정점과 간선으로 구성된, 한정된 자료구조 - 각각의 지점을 정점, 정점과 정점의 연결을 간선이라고 한다. DFS(깊이 우선 탐색) - 가장 직관적이고 구현하기 쉬운 탐색 방법 - 현재 정점과 연결된 정점들을 하나씩 갈 수 있는지 검사하고, 특정 정점으로 갈 수 있다면 그 정점에 가서 같은 행위를 반복한다. - 같은 정점을 다시 방문하지 않도록 정점에 방문했다는 것을 표시해준다. - 재귀 함수를 통해 구현한다. - 단점 : 재귀 함수를 이용하기 때문에 함수 호출 비용이 추가로 들어가며, 재귀 깊이가 지나치게 깊어지면 메모리 비용을 예측하기 어렵다. 최단 경로를 알..
[백준/자바] 13023 - ABCDE import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.StringTokenizer; public class Main { static boolean[] visited; static ArrayList[] arr; static boolean arrived; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer..
[백준/자바] 2023 - 신기한 소수 import java.util.Scanner; public class Main { static int N; public static void main(String[] args) { Scanner sc = new Scanner(System.in); N = sc.nextInt(); dfs(2, 1); dfs(3, 1); dfs(5, 1); dfs(7, 1); sc.close(); } private static void dfs(int num, int target) { if (target == N) { if (isPrime(num)) System.out.println(num); return; } for (int i = 1; i
Do it! 알고리즘 코딩테스트 with JAVA - (13) DFS(깊이 우선 탐색) DFS(깊이 우선 탐색) - 그래프 완전 탐색 기법 중 하나 - 그래프의 시작 노드에서 출발하여 탐색할 한 쪽 분기를 정하여 최대 깊이까지 탐색을 마친 후 다른 쪽 분기로 이동하여 다시 탐색을 수행하는 알고리즘 - 특징 : 재귀 함수로 구현되며,(스택 오버플로에 유의) 스택 자료구조를 이용하기도 한다. - 시간 복잡도는 O(V + E)이며, 여기서 V는 노드 수, E는 엣지 수를 말한다. 핵심 이론 - 한 번 방문한 노드를 다시 방문하면 안 되므로 노드 방문 여부를 체크할 배열이 필요하다. - 탐색 방식은 후입선출 특성을 가진다. DFS 과정 DFS를 시작할 노드를 정한 후 사용할 자료구조를 초기화한다. 스택에서 노드를 꺼낸 후 꺼낸 노드의 인접 노드를 다시 스택에 삽입한다.(방문 배열 체크) 스택 자료..
[백준/자바] 11724 - 연결 요소의 개수 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.StringTokenizer; public class Main { static ArrayList[] al; static boolean[] visited; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer..
[백준/자바] 1978 - 소수 찾기 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); int result = 0; StringTokenizer st = new StringTokenizer(br.readLine()); for..
[프로그래머스/자바] 같은 숫자는 싫어 import java.util.Stack; public class Solution { public int[] solution(int[] arr) { if (arr.length == 1) return arr; Stack stack = new Stack(); stack.push(arr[0]); for (int i = 1; i = 0; i--) { answer[i] = stack.pop(); } return answer; } }
Do it! 알고리즘 코딩테스트 with JAVA - (12) 기수 정렬 기수 정렬 - 값을 비교하지 않는 특이한 정렬 - 값을 놓고 비교할 자릿수를 정한 다음 해당 자릿수만 비교한다. - 시간 복잡도는 O(kn)으로, 여기서 k는 데이터의 자릿수를 말한다. 핵심 이론 - 10개의 큐를 이용하며, 각 큐는 값의 자릿수를 대표한다.(0~9) 문제 풀이 https://yurison.tistory.com/362 [백준/자바] 10989 - 수 정렬하기 3 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class Main { public static void main(String[] args) throws I..