전체보기

📂백엔드 : BackEnd

MVC Pattern, Session, Cookie

JSP를 이용하여 구성할 수 있는 Web Application Architecture는 크게 model1과 model2 로 나뉜다. Model1 : client의 요청에 대한 Logic처리와 response page(view)에 대한 처리를 모두 함 Model2 : 화면에 보이는 부분만 처리 (= MVC패턴을 웹 개발에 도입한 구조 ) Model1 view와 logic을 JSP페이지 하나에서 처리하는 구조 장점 구조가 단순하고 직관적, 배우기 쉽다 개발 시간이 비교적 짧기 때문에 개발 비용이 감소 단점 view코드와 로직처리를 위한 java코드가 섞여 있어서 JSP코드 자체가 복잡해진다 JSP코드에 BE와 FE가 혼재되어 분업이 힘들어짐 프로젝트 규모가 커지게 되면 코드가 복잡해져 유지보수가 어려움 확장..

📂백엔드 : BackEnd

[JSP]

JSP(Java Server Page) HTML내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹 브라우저에 돌려주는 언어 실행 시 servlet으로 변환된 후 실행 됨 (최초 한 번 + JSP수정 시) 변환은 WAS가 해준다. JSP가 빠를까 Servlet이 빠를까? JSP는 Servlet으로 변환되는 과정이 있긴 하지만, 최초 한 번과 수정 시에만 변환된다. JSP에서 GET과 POST를 구분하는 방법 request.getMethod() JSP 문법 선언문 멤버변수 선언이나 메소드를 선언하는 영역 선언문 안에 System.out.println("A"); 과 같은 명령을 넣으면 오류가 발생한다. 처리문 - 클라이언트 요청 시 매번 호출되는 영역. - Servlet으로 변환 시 se..

📂코딩테스트:CodingTest

이진 검색 트리 (백준 5639번)

전위순회 결과를 바탕으로 트리를 만들고, 후위순회를 출력하면 된다. 풀이 순서 1. 입력을 바탕으로 트리를 구성. (노드 클래스를 활용) 2. 노드 클래스 내부에 insert 함수 작성. insert 함수 : 입력된 노드의 값을 현재 노드 값과 비교하여, 왼쪽 혹은 오른쪽에 달아주는 함수. 이때 insert 함수에 재귀함수를 적용해야 한다. 해당 위치가 비어있으면 해당 위치에 노드를 달아주고, 비어있지 않다면 해당 위치에 있는 노드의 insert함수를 재귀호출 코드 package com.mincheolsong; import java.io.*; import java.util.*; public class Main { // BOJ 5639번 이진 검색 트리 static class Node{ int num; N..

📂백엔드 : BackEnd

[Servlet]

1. WebArchitecture page 이동방법 url 입력 (get방식) link (get방식) form (get방식) get (get방식) post 즉 form에 post로 데이터를 전송하지 않으면 모두 GET 방식이다. Persistence Login = 데이터베이스 로직 2. Servlet Servlet = Java + HTML 자바에서 백앤드를 지원하는 api 두 가지 servlet → 자바안에 html이 포함 jsp → html 안에 자바가 포함 처음에 servlet이 먼저 나옴 → 쌍따옴표 안에 html을 하나하나 넣는게 너무 힘들어 → html에 자바 넣으면 어떨까? → jsp 등장 외형 자체가 .java 서블릿 파일에서 생성자 안 만들어도 됨 → init메소드 사용하면 되니까 웹에서 ..

📂코딩테스트:CodingTest

다익스트라 (백준 13549 숨바꼭질 3)

다익스트라로 풀 수 있는 문제상황 한 지점에서 다른 한 지점까지의 최단 경로 한 지점에서 다른 모든 지점까지의 최단 경로 모든 지점에서 다른 모든 지점까지의 최단 경로 해당 문제는 한 지점에서 다른 한 지점까지의 최단 경로를 구해야 하는 문제이다. 문제를 그래프로 바꾸는게 중요하다고 생각한다. 수빈이는 위치 X에서 -1, +1, *2 로 움직일 수 있으니까 위치 X를 노드라고 생각했을 때 X-1, X+1, X*2 를 연결된 노드, 가중치는 문제에서 주어진 (1, 1, 0) 으로 생각했다. 다익스트라 알고리즘 (우선순위큐 활용) 코드 package com.mincheolsong; import java.io.*; import java.util.*; public class Main { // boj 13549 ..

📂코딩테스트:CodingTest

트리의 지름 (백준 1167번)

트리의 지름이란 트리에서 임의의 두 점 사이의 거리 중 가장 긴 것이다. 결론 임의의 정점에서 가장 거리가 긴 노드를 찾는다. (dfs 한 번) 찾아진 노드에서 가장 거리가 긴 노드까지의 거리를 구하면 된다. (dfs한 번) (총 dfs 두 번에 트리의 지름을 찾을 수 있다) 설명 위 트리의 경우 1 - 3 - 4 - 5 가 트리의 지름(트리에서 임의의 두 점 사이의 거리 중 가장 긴 것) 경로가 된다. 여기서 트리의 지름이 되는 양 끝 노드는 1과 5이다. 이 때 임의의 정점에서 거리가 가장 긴 노드는 1 혹은 5를 반드시 지나게 된다. 1에서 거리가 가장 긴 경로 : 1 - 3 - 4 - 5 2에서 거리가 가장 긴 경로 : 2 - 4 - 5 3에서 거리가 가장 긴 경로 : 3 - 4 - 5 4에서 거..

📂코딩테스트:CodingTest

플로이드 워셜 알고리즘

모든 노드에서 다른 모든 노드까지의 최단경로를 모두 계산함 다익스트라 알고리즘과 마찬가지로 단계별로 거쳐 가는 노드를 기준으로 알고리즘을 수행 다익스트라와 다르게 매 단계마다 방문하지 않은 노드 중에 최단 거리를 갖는 노드를 찾는 과정이 필요하지 않음. 2차원 테이블에 최단 거리 정보를 저장 DP 유형에 속함 (점화식에 맞게 3중 FOR문을 이용해서 2차원 테이블을 갱신) 노드의 계수가 밀집그래프(완전그래프에 가까운 그래프)인 경우 플로이드 워샬 알고리즘이 효율적이다. 밀집그래프가 아닌 경우 다익스트라를 n번 돌리는게 빠르다 O(n^3)의 시간복잡도로 다익스트라(인접행렬을 사용한 경우)의 시간복잡도와 동일하다 N이 100이면 → 100만이어서 가능, 500이어도 → 1억 2천 500만 이어서 try해볼 ..

📂코딩테스트:CodingTest

백준 9465 스티커

dp로 푸는 문제. 알게된 점 점화식을 세울 때 arr[r][c]를 포함하는 경우와 포함하지 않는 경우만 생각하지 말자 이번 문제는 arr[r][c]를 뽑을 수 있는 이전 위치를 고려해야 했다! dp는 최적해의 부분최적해를 생각하며 점화식을 세워야 한다. 처음 접근방식 arr[r][c] 의 스티커를 떼는 경우와 떼지 않는 경우를 고려해서 점화식을 세우려고 했다. 올바른 접근방식 arr[r][c]의 스티커를 뗄 수 있는 경우만 고려하고, arr[r][c] 스티커를 뗄 수 있는 이전 위치 (arr[1][c-1] or arr[1][c-2] 혹은 arr[0][c-1] or arr[0][c-2]) 를 부분최적해로 보는 것 이었다. 점화식 r=0인 경우 dp[r][c] = max{dp[1][c-1], dp[1][c..

mc.thd
'분류 전체보기' 카테고리의 글 목록 (8 Page)