일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 알고리즘
- 페이징
- retry
- MVC
- 디자인 패턴
- 오라클
- Spring Boot
- feign
- 클라우드
- Spring Cloud
- Intellj
- 쿼리
- Spring
- golang
- 운영체제
- aws
- Kafka
- SQL
- 백준
- PL/SQL
- 코딩
- Jenkins
- 자료구조
- JPA
- MST
- 데이터베이스
- Spring Cloud Feign
- 자바
- DP
- db
- Today
- Total
목록자바 (38)
justgo_developer
큐(Queue) 큐는 데이터의 제거는 가장 앞에서 수행되며, 데이터의 삽입은 가장 뒤에서 수행되는 제한된 리스트 구조가장 먼저 삽입된 데이터가 가장 먼저 제거되는 선입선출(FIFO- first in first out)형태의 자료구조이다. 가장 오래전에 입력된 데이터를 front라고 하며가장 최근에 입력된 데이터를 rear라고 한다. 삭제는 front에서 이루어지고삽입은 rear에서 이루어 진다. 삽입 - insert: 리스트 끝 부분을 가리키는 rear에서 발생하며데이터가 삽입 될때 하나 증가시킨 후 새로운 데이터를 삽입하도록 구현한다.삭제(추출) - remove: front가 가리키고 있는 데이터를 꺼낸 후 front값을 하나 증가 시키도록 구현한다.front값이 rear를 추월하게 되면 더 이상 제거..
스택(Stack)-배열 이용: 가장 최근에 들어간 데이터가 먼저 나오는 구조후입선출(Last In First Out)이라고 한다. 배열은 사이즈가 정해져 있다.현재 데이터의 위치를 알기 위해 top이라는 변수를 사용(스택포인터) Push : 스택에 데이터를 넣는 작업Pop : 스택에 들어 있는 데이터를 빼내는 작업 실제로 배열을 이용한 스택 구조에서는 top의 위치를 변경함으로써데이터를 빼낸 것처럼 처리한다. Push: 스택에 데이터가 가득 찼는지 확인 후 가득차있지 않다면 데이터를 넣어주는 작업Pop : 스택에 데이터가 있는지 확인 후 데이터 배내는 작업 연결리스트를 이용한 스택: 연결리스트를 이용한 스택 구현은 스택의 크기가 정해져있지 않고 동적으로 늘어날 수 있다. 첫 노드를 head, 마지막 노드..
동적계획법(DP) Fibonacci Numbers->recursion으로 하니 많은 계산이 중복됨Memoization: 중간 계산 결과를 cahing함으로써 중복 계산을 피함bottom-up 방식배열을 이용해 순환식을 bottom-up방식으로 계산하는 것은 동적계획법이라ㅗㄱ 한다. 이항계수(Binomial Coefficient)->많은 계산이 중복됨 Memoization Dynamic Programming Memoization vs Dynamic Programming- 순환식의 값을 계산하는 기법들이다.- 둘 다 동적계획법의 일종으로 보기도 한다.- Memoization 은 top-down방식이며, 실제로 필요한 subproblem만을 푼다.- 동적계획법은 bottom-up 방식이며, recursion에..
import java.util.*; public class Main {static int N;static int[][] map = new int[25][25];static boolean[][] visit = new boolean[25][25];static int[] dx = {0,1,0,-1};static int[] dy = {1,0,-1,0};static int cnt = 1; public static void main(String[] args) {Scanner sc = new Scanner(System.in);N = sc.nextInt();for(int i=0;i
import java.util.*; public class Main {static int N;static int[][] map = new int[25][25];static boolean[][] visit = new boolean[25][25];static int[] dx = {0,1,0,-1};static int[] dy = {1,0,-1,0};static int cnt = 1;static int len = 0; public static void main(String[] args) { Scanner sc = new Scanner(System.in);N = sc.nextInt();for(int i=0;i
Floyd-warshall algorithm(all-to-all) - 가중치 방향 그래프 G=(V,E) , V={1,2,...n}- 모든 노드 쌍들간의 최단경로의 길이를 구함- d^k[i,j] : 중간에 노드집합 {1,2,....k}에 속한 노드들만 거쳐서 노드 i에서 j까지 가는 최단경로의 길이경로찾기 경로출력하기
import java.util.*; public class Main {static int T;static int M;static int N;static int K;static int[][] map;static boolean[][] visit;static int[] dx = {0,1,0,-1};static int[] dy = {1,0,-1,0}; public static void main(String[] args) {Scanner sc = new Scanner(System.in);T = sc.nextInt();for(int i=0;i
Bellman-Ford 알고리즘 한가지가능의예일뿐 과정은 다를수 있다. Dijkstra의 알고리즘- 음수 가중치가 없다고 가정- s로뷰토의 최단경로의 길이를 이미 알아낸 노드들의 집합 s를 유지. 맨 처음엔 S={공징합}.- Loop invariant : S에 포함되지 않는 u에 대해서 d(u)는 이미 s에 속한 노드들만 거쳐서 s로부터 u까지 가는 최단경로의 길이- d(u)가 최소인 노드 u(s에 속하지않고)를 찾고, s에 u를 추가- s가 변경되었으므로 다른 노드들의 d(v)값을 갱신 d(v) = min{d(v),d(u)+w(u,v)}즉, 에지(u,v)에 대해서 relaxation하면 Loop invariant가 계속 유지됨
import java.util.*; public class Main {static int N;static int M;static int [][] maze = new int[100][100];static boolean [][] visit = new boolean[100][100];static int[] dx = {0,1,0,-1};static int[] dy = {1,0,-1,0}; public static void main(String[] args) {Scanner sc = new Scanner(System.in);N = sc.nextInt();M = sc.nextInt();for(int i=0;i
import java.util.LinkedList;import java.util.Queue;import java.util.Scanner; public class Main {static int N;static int M;static int V;static int[][]G;static boolean[]visit;public static void dfs(int n){visit[n]=true;System.out.print(n+" ");for(int i=1; i