[자료 구조] Binary Search Tree(BST)

트리(tree)란 노드(데이터)를 거꾸로 뒤집힌 나무의 모양처럼 저장한 비선형 계층적 자료구조이다.트리는 다음과 같은 특징을 가지고 있습니다.하나의 루트 노드와 0개 이상의 하위 트리로 구성되어 있습니다.데이터를 순차적으로 저장하지 않기 때문에 비선형 자료구조입니다.트

2022년 7월 25일
·
0개의 댓글
·

[자료 구조] Hash Table

Hash table은 효율적인 탐색(빠른 탐색)을 위한 자료구조로써 key-value쌍의 데이터를 입력받는다. Hash function h에 key 값을 입력으로 넣어 얻은 해시값 h(k)를 위치로 지정하여 key-value 데이터 쌍을 저장한다. 저장, 삭제, 검색의

2022년 7월 25일
·
0개의 댓글
·

[자료 구조] Circular Queue

동적 배열을 사용한 큐에서는 배열의 가장 앞에서부터 데이터를 꺼내오기 때문에, 데이터를 꺼낸 후 그 다음 인덱스의 데이터들을 모두 한 칸씩 이동시켜줘야 한다는 문제가 있다. 이 과정은 자료 하나를 꺼낼 때마다 O(n)의 시간 복잡도를 요구하기 때문에 매우 비효율적이다.

2022년 7월 23일
·
0개의 댓글
·

[자료 구조] Stack, Queue, Priority Queue

스택(stack)은 데이터를 입력된 순서대로 쌓고, 나중에 들어온 데이터부터 먼저 꺼내 사용하는 자료 구조이다.스택의 특징맨 마지막에 들어온 데이터가 가장 먼저 스택에서 제거되는 LIFO(Last in First Out) 원리가 작용한다.요소의 삽입/제거가 'top'이

2022년 7월 23일
·
0개의 댓글
·

[자료 구조] Array, Dynamic Array, Linked List

배열(array)는 여러 데이터를 연속된 메모리에 저장할 때 사용하는 자료 구조로, 동일한 자료형의 데이터를 한꺼번에 순차적으로 관리할 수 있게 해준다. 배열은 한번 생성하면 크기를 변경할 수 없다(데이터가 메모리에 정적, 연속적으로 할당됨). 배열은 인덱스(메모리 주

2022년 7월 19일
·
0개의 댓글
·

[JAVA] 예외 처리

오류(error)는 컴파일 오류와 실행 오류로 나뉜다.컴파일 오류(compile error): 프로그램 코드 작성 중 발생하는 문법적 오류실행 오류(runtime error): 실행 중인 프로그램이 의도하지 않은 동작을 하거나(bug) 프로그램이 중지되는 오류실행 오류

2022년 7월 17일
·
0개의 댓글
·

[JAVA] Stream

스트림(stream)은 배열, 컬렉션 등의 자료를 더 효율적으로 일관성 있게 연산 처리를 하도록 도와주는 Java 내장 클래스이다.자료의 대상과 관계 없이 동일한 연산을 수행한다.배열, 컬렉션을 대상으로 동일한 연산을 수행한다. 일관성 있는 연산으로 자료의 처리를 쉽고

2022년 7월 14일
·
0개의 댓글
·

[JAVA] 람다 표현식, 함수형 인터페이스

람다 표현식(lambda expression)이란 자바에서 함수형 프로그래밍(functional programming)을 구현하는 방식이다. Java8부터 지원하고 있으며, 클래스를 생성하지 않고 함수의 호출만으로 기능을 수행할 수 있다.함수형 프로그래밍이란?순수 함수

2022년 7월 14일
·
0개의 댓글
·

[JAVA] 내부 클래스

자바 내부 클래스(inner class)란 클래스 내부에 생성된 클래스이다. 내부 클래스는 구현 위치에 따라 인스턴스 내부 클래스, 정적 내부 클래스, 지역 내부 클래스, 익명 내부 클래스로 나눌 수 있다. 하나씩 예제와 함께 살펴보자.인스턴스 내부 클래스란 외부 클래

2022년 7월 14일
·
0개의 댓글
·

[JAVA] Generic Programming

제네릭 프로그래밍(Generic programming)이란 변수의 선언이나 메서드의 매개변수를 하나의 참조 자료형이 아닌 여러 자료형이 변환될 수 있도록 프로그래밍 하는 방식이다. 클래스의 속성과 기능의 종류는 같지만 참조 자료형만 다른 경우에 제네릭 프로그래밍 방식을

2022년 7월 13일
·
0개의 댓글
·

[JAVA] Singleton 패턴

Singleton 패턴이란 static 명령어를 이용하여 전 시스템에 단 하나의 인스턴스만이 존재하도록 구현하는 방식이다. 구현 방식은 아래와 같이 크게 세 가지로 나눌 수 있다.자바에는 글로벌 변수가 없기 때문에 static 변수(class 변수라고도 함)를 사용하여

2022년 7월 13일
·
0개의 댓글
·
post-thumbnail

[JAVA] JVM 구조 및 메모리 영역 - Class, Heap, Stack Area

JVM(Java virtual machine)은 자바 가상 머신으로 자바 바이트 코드를 해석하는 역할을 한다. JVM만 있다면 플랫폼에 영향을 받지 않으므로 Window, Linux 등 다양한 환경에서 사용이 가능하다. 아래 세 가지 실행 단계를 거쳐 자바 소스코드가

2022년 7월 13일
·
0개의 댓글
·

[JAVA] Object Oriented Programming(OOP) - 추상화, 캡슐화, 상속, 다형성

객체(Object)란 '의사나 행위가 미치는 대상'을 의미하는 것으로 객체 지향 프로그래밍(Object Oriented Programming)은 객체들 간의 상호작용을 기반으로 로직을 구성하는 하는 프로그래밍 방법이다. Java는 대표적인 객체 지향 프로그래밍 언어이다

2022년 7월 12일
·
0개의 댓글
·

[JAVA] 제어문(control flow statements)

제어문이란 프로그램의 흐름을 제어하는 것이다. 제어문은 크게 조건문과 반복문으로 나눌 수 있다. 조건문이란 주어진 조건에 따라 다른 수행문이 실행되도록 프로그래밍하는 것이다.if-elseswitch-case반복문이란 주어진 조건이 만족하는 동안 수행문을 반복적으로 수행

2022년 6월 28일
·
0개의 댓글
·

[JAVA] 연산자(operator)

연산에 사용되는 값을 항(operand), 연산 기호를 연산자(operator)라고 한다. 이번 포스트에서는 Java의 내장 연산자에 대해서 다룰 것이다. 연산자에는 덧셈, 뺄셈 등 사칙연산을 담당하는 산술 연산자와 and, or, not과 같은 논리 연산자 등 다양한

2022년 6월 26일
·
0개의 댓글
·

[JAVA] 변수와 자료형

컴퓨터는 0과 1로만 데이터를 저장한다.bit: 컴퓨터가 표현하는 데이터의 최소 단위로 2진수 하나의 값을 저장할 수 있는 메모리의 크기byte: 1byte = 8bitJava에서 진수로 입력하는 규칙은 아래 예시를 참고하자. 아래 예시는 숫자 '10'을 10, 2,

2022년 6월 26일
·
0개의 댓글
·

[React] react-hook-form

react-hook-form은 React에서 form을 만들 때 사용하는 라이브러리이다. 대부분의 개발 프로젝트에서는 form을 사용하는데, 복잡한 형태의 form을 다루거나 validation, error type check 등의 기능이 필요할 때 간결한 코드로 구현

2022년 6월 19일
·
0개의 댓글
·

[React] Recoil

Recoil은 react를 위한 상태관리 라이브러리(state management library)이다. 기존의 react 상태관리 기능은 다음과 같은 한계를 가지고 있었고, 이것을 개선하고자 Recoil이 개발되었다.컴포넌트의 상태는 공통된 상위요소까지 끌어올림으로써

2022년 6월 16일
·
0개의 댓글
·

[React] react-router-dom

react-router-dom은 웹에서 페이지 이동 기능을 구현하기 위한 라이브러리이다. Routing이란 네트워크간 데이터 전송의 최적 경로를 선택하는 과정이다. 여기서 최적 경로는 최단거리가 될 수도 있고, 가장 빠른 시간에 전달하는 것으로 계산될 수도 있다.Rou

2022년 6월 12일
·
0개의 댓글
·

[React] React Query

useQuery는 서버로부터 비동기로 데이터를 조회할 때 사용되는 custom hook이다. useQuery를 사용하면 기존에 isLoading, isError, refetch, 데이터 캐싱 등 개발자가 직접 구현하려면 꽤 귀찮거나 까다로웠던 기능을 제공해주기 때문에,

2022년 6월 12일
·
0개의 댓글
·