본문 바로가기

Programming

(99)
[Python] Heap & Heapq Heap 그리고 Heapq 모듈 본 문서에는 자료구조 힙(Heap)과 파이썬 모듈 Heapq에 관하여 공부한 내용을 기록한다. Heap 이란? 완전 이진 트리 중 하나로 우선순위 큐를 위하여 만들어진 자료구조다. 여러개의 값들 중 최댓값 또는 최솟값을 빠르게 찾아내기 위하여 고안된 자료구조다. (역시 모든 것은 필요에 의해 만들어진다.) 힙은 일종의 반정렬 상태를 유지한다. 큰 값이 상위 레벨에 있꼬 작은 값이 하위 레벨에 존재한다. 즉, 부모 노드의 키 값이 자식 노드의 키 값 보다 항상 큰(또는 작은) 이진 트리를 의미한다. 힙은 중복된 값을 허용한다. (이진 트리는 중복 값을 허용하지 않는다.) Heap의 종류 힙은 Max Heap, Min Heap으로 나뉘어진다. MaxHeap 부모 노드의 키 값..
[Python] 인접 행렬과 인접 리스트 인접 행렬 & 인접 리스트 그래프에 대한 이해가 부족하다고 느껴 다시 공부를 진행하고 있다, 본 문서에서는 그래프를 코드로 구현하는 방법에 대하여 기재한다 알고리즘 문제를 접하다보면 Graph 문제를 심심치 않게 접할 수 있다. 이러한 문제들을 풀때는 현재 그래프의 모습을 모델링한 이후 푸는것이 일반적이다. 이 때 , 모델링한 그래프의 연결관계를 나타내는 방법은 크게 두가지로 나뉜다. 1. 인접 행렬 2. 인접 리스트 위 두가지 방법에 대해 순차적으로 살펴보도록 한다. 1. 인접 행렬 인접 행렬이란, 이름 그대로 그래프의 연결 관계를 행렬로 표현하여 이차원 배열로 나타내는 방식을 의미한다. 인접 행렬 adj[i][j] 을 아래와 같이 정의할 수 있다. adj[i][j] : 노드 i에서 j로 가는 간선이 ..
[Python] 선택 정렬, 거품 정렬, 삽입 정렬, 퀵 정렬, 병합 정렬 정렬 - Sort 선택 정렬 - Selection Sort 설명 선택 정렬 알고리즘은 정렬되어 있지 않은 데이터 중 가장 작은 데이터를 선택하여 맨 앞부터 순서대로 정렬해 나아가는 알고리즘이다. 선택 정렬은 정렬된 값을 배열의 맨 앞부터 하나씩 채워나가게 된다. 따라서, 뒤 index 로 갈수록 비교 범위가 1씩 감소한다는 특성을 갖는다. 입력 배열이 이미 정렬되어 있거나 말거나 상관없이 동일한 연산량을 갖기 때문에 최적화의 여지가 적어 성능이 떨어지는 편이다. 루프문을 통해 모든 인덱스에 접근해야 하기 때문에 기본적으로 O(N) 시간을 소모하며, 최소값을 찾으면 현재 인덱스와 최소값을 서로 swap해야 하기 때문에 O(N) 시간을 필요로 하게 된다. 오름차순 정렬 기준으로 최소값을 찾기 위해 비교는 여..
[Python] BFS & DFS BFS & DFS BFS (Breath - First - Search)7u7jujjjuuujjjj from collections import deque # BFS (Breath - First - Search), 너비 우선 탐색 구현 graph = { # dictionary 'A': ['B'], 'B': ['A', 'C', 'H'], 'C': ['B', 'D'], 'D': ['C', 'E', 'G'], 'E': ['D', 'F'], 'F': ['E'],..
[JSP] Action Tag Action Tag Action Tag란? JSP 페이지 내에서 어떠한 동작을 하도록 지시하는 태그이다. 예를 들어 페이지 이동, 페이지 include 등등이 있다. 우선은 'forward', 'include', 'param' 태그에 대해 알아보자. forward, include, param 태그 forward forward태그는 이름 그대로 현재의 페이지에서 다른 특정페이지로 전환할 때 사용한다. main.jsp 페이지 입니다. include 현재 페이지에 다른 페이지를 삽입할 때 사용한다. sub.jsp 페이지 입니다. 다시 sub.jsp 페이지 입니다. param forward 및 include 태그에 데이터 전달을 목적으로 사용되는 태그이다. 이름과 값으..
[JSP] Request & Response 객체 그리고 지시자 지시자, Request & Response 객체 지시자 JSP 페이지의 전체적인 속성을 지정할. 때 사용한다. page, include, taglib이 존재하며, 형태로 사용한다. page : 해당 페이지의 전체적인 속성을 지정 include : 별도의 페이지를 현재 페이지에 삽입 taglib : 태그 라이브러리의 태그 사용 page 지시자 페이지의 속성을 지정할 때 사용하며 주로 사용되는 언어 지정 및 import 문에 많이 사용한다. ex) page.jsp include.jsp page test2 taglib 지시자 사용자가 만든 tag들을 태그 라이브러리라고 부르며, 이러한 태그 라이브러리를 사용하기 위해 taglib 지시자를 사용한다. uri 및 prefix 속성이 존재하며, uri는 태그 라이브..
[JSP] Servlet Lifecycle & JSP 태그와 동작의 이해 Servlet Servlet : 웹 프로그래밍에서 클라이언트의 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 Servlet 클래스의 구현 규칙을 지킨 자바 프로그래밍 기술 간단히 말하여 Servlet이란 자바를 사용하여 웹을 만들기 위해 필요한 기술이다. 클라이언트가 어떠한 요청을 하면 그에 대한 결과를 다시 전송해주어야 하는데, 이러한 역할을 하는 자바 프로그램이 servlet이다. 일반적인 웹 서버는 정적인 페이지만 제공한다. 그렇기에 동적 페이지를 제공하기 위해서 웹 서버는 다른 곳에 도움을 요청하여 동적인 페이지를 작성해야 한다. 여기서 웹 서버가 동적 페이지를 제공할 수 있도록 도와주는 어플리케이션이 servlet이다. 클라이언트에서 servlet 요청이 들어오면 서버에서는 servle..
Servlet & doGet() & doPost() 그리고 MVC 패턴 Servlet 서블릿은 HttpServlet라는 클래스를 상속받는다. 서블릿은 java언어를 사용하여 웹 프로그램을 제작하는 것. Servlet(interface)