Heap 힙 자료구조 힙이란? 특정한 규칙을 가지는 트리로, 최댓값과 최솟값을 찾는 연산을 빠르게 하기 위해 고안된 완전 이진트리를 기본으로함 배열에 데이터를 넣고, 최대값과 최솟값을 빠르게 찾기 위해서는 O(n)이 걸리지만, 힙에 데이터를 넣고 최댓값과 최솟값을 찾으면 O(logn)이 걸림 힙 property? 최소 힙? 부모 노드의 키값이 자식 노드의 키값보다 항상 작은 힙 최대 힙? 부모 노드의 키 값이 자식 노드의 키값보다 항상 큰 힙 -> 이러한 속성으로 힙에서는 가장 낮거나 높은 우선순위를 가지는 노드가 항상 루트에 오게됨 -> 이를 통해 우선순위큐와 같은 추상적 자료형을 구현할 수 있음 힙 함수 활용하기 heapq.heappush(heap, item): item을 heap에 추가 heapq...
그래프 최단경로 - 각 간선의 가중치 합이 최소가 되는 두 정점 사이의 경로를 찾는 문제 - (Wiki) 가장 짧은 경로에서 두 꼭짓점을 찾는 문제로서, 가중 그래프에서는 구성하는 변들의 가중치 합이 최소가 되도록 하는 경로를 찾는 문제이다. 예를 들면, 도로 지도 상의 한 지점에서 다른 지점으로 갈 때 가장 빠른 길을 찾는 것과 비슷한 문제 알고리즘종류 (1) 다익스트라 : 단일-쌍, 단일-출발, 단일-도착 최단 경로 문제 (2) 벨먼-포트 알고리즘 : 변의 가중치가 음수라면 단일 출발 문제 (3) A* 탐색 알고리즘 : 탐색 속도를 높히기 위한 휴리스틱 방법을 사용하며, 단일-쌍 최단 경로 문제를 풀 수 있음 (4) 플로이드-와셜 알고리즘 : 전체-쌍 최단 경로 문제를 풀 수 있음 17. Letter..
단순복제 - 완전히 동일한 객체 얕은복사(Shallow Copy) 1) Object.assign 2) (...) 스프레드 연산자 사용 깊은 복사 1) JSON.stringify & JSON.parse 사용 JSON.stringify : javascript 오브젝트를 String format으로 변환 JSON.parse : 스트링포맷을 javascript object로 변환 - 이전객체에 대한 참조가 없어지는 원리를 이용하는 것(cf. 깊은 복사가 불가능한 것? functions, Data객체, Infinity 데이터 복사) 2) 재귀적으로 짜기 3) 웹 개발시? Loadsh 사용
JAVA 0. JAVA의 특징 - 객체지향 프로그램 언어 중 하나로 썬 마이크로 시스템즈에서 처음 발표 - 이식성이 높은 언어, 서로 다른 실행 환경을 가져도 자바 실행환경만 설치되면 모든 운영체제에서 실행가능 - 객체지향언어 (OPP) - 자바 8부터 람다식사용하여 컬렉션 요소를 필터링, 매핑, 집계처리하는게 쉬워짐 - 메모리 자동 관리 - 다양한 애플리케이션 개발 - 멀티 스레드 쉽게 구현 가능 - 속도가 느리고 , 예외처리가 불편 JAVA 8 - 출시일 :2014년 3월 * LTS와 비 LTS 버전의 차이 - 비 LTS는 업데이트 제공기간이 짧다 - 비 LTS 배포 주기 6개월 .... LTS 배포 주기 3년 - 주요기능 : 람다 표현식, 메소드 레퍼런스, 스트림 API, Optional 1. 기본..
Stream - Stream 이란 ? Collection Builder , 람다를 활용할 수 있는 기술 중 하나이다. 이전에는 for문과 foreach문을 돌 때 로직이 복잡해지면서 복잡한 경우가 발생한다. 스트림은 즉, 데이터의 흐름이기 때문에 배열 또는 컬렉션에 함수를 사용하여 원하는 결과를 필터링 할 수 있다는 장점이 있다. 즉 함수형으로 처리할 수 있다. - Functional Program에는 null을 직접적으로 다루지 않는다. Functional Program 이 더 안전하고 원하는 것을 더욱 더 쉽게 다룰 수 있다. (1) InStream - java.util.stream 패키지 내에 스트림관련 API존재 1 2 3 IntStream.range(1,10).forEach(i -> System..
함수형 프로그래밍 (Functional Programming) 자료처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임의 하나 프로그래머들이 일하는 새로운 패러다임을 제시함 함수에 동작에 의한 변수의 부수적인 값 변경을 원천 배제함으로써 이런 종류의 오류를 방지 외부 변수를 사용하더라도, 그 본체에 접근해서 변경하는것이 아니라 인자를 넣어서 사본으로 복사해가서 작업을 하기 때문에 어떤 작업을 하든 부작용은 일어나지 않는다. for문이나, while문의 경우 특정 변수의 상태 변화, 즉 부수효과를 필요로 한다. 특징존재 1. Input , Output이 있다. 2. 외부환경으로부터 독립적임 3. 외부환경으로부터 독립적이기 때문에 같은 Input에 대해서는 동일한 Outp..
1. 직렬화와 역직렬화란? 직렬화 Serialization object를 binary 형태의 파일로 바꾸는거 컴퓨터는 0과 1로 구성되어 있기 때문에 binary형태로 바꿔주는것이 필요 .bin이나 ser(Serialization) 역직렬화 Deserialization Binary형태의 파일을 Object로 생성하는것 직렬화가 필요한이유? - 저장이 필요하기 때문에 * JAVA - InputStream 1 2 3 4 FileOutputStream fsOut = new FileOutputStream("binFile.bin"); ObjectOutputStream osOut = new ObjectOutputStream(fsOut); osOut.writeObject(student); osOut.close(); ..
JAVA 데이터타입(문자열) - 한개의 문자 값에 대한 자료형은 문자(char)을 사용함 Type 메모리 크기 기본값 데이터 표현 범위 문자형 char 2 byte '\u0000' 0 ~ 65,535 (참고) JAVA의 변수 타입 - 기본형(Primitive Type)과 참조형(Reference Type) -> 링크 - (1) 기본형(primitive type) - Stack 메모리에 저장 ,실제값저장 - (2) 참조형(reference type) - 기본형을 제외한 타입들, Heap 메모리에 저장 형변환 char 예제 char a1 = 'a'; char a2 = 97; char a3 = '\u0061'; System.out.println(a1); //a -> 문자값 System.out.println(a..
데이터모델링이란? - 현실 세계의 비즈니스를 IT 시스템으로 구현하기 위해 데이터 관점으로 업무를 분석하는 기법 - 현실 세계의 비즈니스를 약속된 표기법으로 표현하는 과정 - IT 시스템의 근간이 되는 데이터베이스를 구축하기 위한 분석 및 설계 과정 데이터모델링 3단계 논리적 설계(데이터 모델링) 물리적 설계 데이터베이스 엔티티(Entity) 테이블 테이블 속성(Attribute) 칼럼 칼럼 주 식별자(Primary Identifier), UID 기본 키(Primary Key) 기본키 외래 식별자(Foreign Identifier) 외래 키(Foreign Key) 외래 키 관계(Relationship) 외래 키 - 엔터티란? - 비즈니스 관점에서 IT 시스템을 통해 저장 및 관리해야하는 집합적인 어떤 것..
JAVA 1. Java Collection Framework - Array - Collections - List - (ArrayList, Stack) - Queue - (LinkedList, PriorityQueue) - Map - Hashtable / HashMap/ SortedMap 2. 배열(Array) * java - 배열을 생성할 경우 데이터타입의 초기값으로 초기화가 된다. - 배열은 여러개의 데이터를 저장할 때 사용되고 Index 구조에 저장된다. - 배열의 길이는 한번 생성을 하면 줄이거나 늘릴 수 없으며 서로 다른 타입을 사용할 수도 없다. - 이때 정수형 = 0. boolean은 false형으로 초기화가 된다. (1) 배열 기본 - 1차배열 // int 배열 넣기 int[] values ..