더보기 기존 서블릿에서는 자바 코드를 기반으로 [문자열]을 사용해 HTML과 자바스크립트로 화면을 구현했으나, JSP는 이와 반대로 HTML,CSS,자바스크립트를 기반으로 JSP요소들을 사용해 화면을 구현합니다. - 자바 웹을 다루는 기술 中
확실히 다익스트라 알고리즘에 비하면 쉽긴하다. 다익스트라가 음수는 되지 않는다는 문제점이 있었는데 이걸로 사용하면 될것 같다, 플로이드 워셜의 핵심 코드는 for(int k = 1; k
static void dijkstra(int start) { Queue q = new PriorityQueue(); q.offer(new Node(start,0)); distance[start] = 0; while(!q.isEmpty()) { Node shortest = q.poll(); int dist = shortest.distance; int now = shortest.index; if (distance[now] < dist) { continue; } for(int i = 0; i
우선순위 큐는 일반적인 큐와 달리 철저히 우선순위에 의해 동작한다. 우선순위를 설정하는 방법은 여러가지가 있다. 간단하게 우선순위를 정할 경우, 리스트를 이용해도 된다. List list = new ArrayList(); Collections.sort(list); 이런식으로 작성하면 리스트로 우선순위 큐를 만들 수 도 있다. 하지만 리스트로 이용할시, 많은 시간이 발생한다. 그래서 리스트보다는 힙 자료구조를 이용해서 우선순위 큐를 이용한다. 즉, 이름은 큐이지만 사실은 힙인듯 싶다. 보통 힙 알고리즘은 이런식으로 시작된다. 하지만 이건 아직 힙 정렬을 하지 않는 상태다. 위는 완전 이진 트리라고 하는데 이 부분은 추후에 설명할지도 모르겠다. 아무튼 힙 정렬은 2가지로 구분되는데, 최소 힙정렬과 최대 힙 ..
static void dijkstra(int start) { d[start] = 0; visited[start] = true; for(int j = 0; j 검색 -> 최소 -> 검색... 이런식으로 동작되는 것 같습니다. 뭐 이건 이해가 되지 않아도 상관없습니다. 마지막으로 방문은 그 노드에 방문해서 생기는 것이 아니라 그 노드에서 시작할때 발생하는 겁니다. 다익스트라 알고리즘은 최단거리를 구하는 알고리즘으로 잘 알려져 있지만, 간선(노드와 노드 사이)의 길이가 음수라면 불가는하..
점화식 if (array[i] < array[j]) { dp[i] = max(dp[i],dp[j]+1); } 가장 긴 증가하는 부분 수열에 위 점화식으로 모두 해결이 가능하다. 다음은 백준 11053번 문제이다. 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 여기서 우리가 알아야할 것은 부분 수열이다. 수열은 숫자가 열거된 형태를 말하기 때문에 배열이라 생각해도 무방할 것 같다. 부분수열이란? 그렇다면 부분 수열이라는것은 무엇일까? 위 수열 {10,20,10,30,20,50} 의 부..
* 주의 : 다이나믹 프로그래밍과 다이나믹, 프로그래밍은 아무런 관계없습니다. 처음 이 알고리즘을 만든 분에 따르면 단지 멋있어서 지으셨다는 이야기가 있네요.ㅎㅎ(믿거나 말거나) 중복된 연산을 줄이는 방법으로 사용된다. 여기서 우리는 어떻게 중복된 연산인지 알 수 있을까? 에 대해 생각할 수 있다. 모든 문제들이 중복된 연산이 있는것도 아니고... 어떻게 파악을 해야할까? 많은 방법이 있겠지만... 그 전에 한 가지 공식을 살펴볼 것이다. 이 공식은 고등학교 시절때 배운 공식 중 하나로 등차 수열이라는 공식이다. 등차 수열은 일반적으로 1 3 5 7 9 ..... 이런식으로 증감의 형태로 진행이 되는 특징을 가지고 있다. 우리는 이 식의 점화식을 세울 수 있는데.. 점화식은 x = 2x+1이 된다. 왜 ..
문제는여기에 있습니다. [백준] 14888번 연산자 끼워넣기 문제 N개의 수로 이루어진 수열 A1, A2, ..., AN이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 N-1개의 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(×), 나눗셈(÷)으로만 이루어져 있다. 우 b-programmer.tistory.com 전에는 메소드에 변수를 담아 사용했지만... 이번에는 다른 방법을 사용해봤다. 하지만 이 방법은 전에 사용했던 방법과 크게 차이는 없지만, 하나가 차이가 있다, 바로 메소드에 변수를 할당하지 않고 문제를 풀어보았다. package _13.dfs.bfs; import java.util.Scanner; public class Operator3 { static int[] op = n..
개요 조합은 n개 중에서 k를 골라서 뽑는 방법을 구하는 통계용어다. 예를들어 10개 중에서 3개를 고른다고 가정하자. 그러면 10*9*8 / 3 * 2 * 1 => 120가지다. 물론 크기가 너무 크기 때문에 조금더 작은 걸로 교채해보면 5개중애 2개를 고른다면 총 10가지가 나온다. 공을 5개 가지고 있다고 생각해보자. 이들을 2개씩 나눠 보자. 이런식으로 나눌 수 있다는 것을 확인 할 수 있다. 물론 순서는 상관이 없냐고 물어볼 수 있다. 결론부터 말하면 상관없다. 검파나 파검이나 뽑는 사람 입장에서는 파란색 공과 검정색 공을 뽑기 때문이다. 즉, 아무 상관없다는 뜻이다. 이제 이 방법을 토대로 코드를 작성해보자. c++이나 파이썬같은 경우, 조합과 관련해서 라이브러리를 재공해준다. 하지만 자바는 ..
1.데이터 베이스 설계 Sql-Study-Organization/SQL_Repository Contribute to Sql-Study-Organization/SQL_Repository development by creating an account on GitHub. github.com 2. 정규화 Sql-Study-Organization/SQL_Repository Contribute to Sql-Study-Organization/SQL_Repository development by creating an account on GitHub. github.com 3. 트랜잭션 START TRANSACTION 트랜잭션 시작 COMMIT 트랜잭션 내에서 실행한 명령을 적용한 후 종료 ROLLBACK 트랜잭션 내에서..