DFS (Depth-First Search)정의DFS는 깊이 우선 탐색(Depth-First Search)으로, 그래프나 트리에서 출발 노드에서 시작해 한 방향으로 끝까지 탐색한 후 다시 돌아와 다른 경로를 탐색하는 방식스택(Stack) 자료구조를 기반으로 작동하며, 재귀적으로 구현하는 경우도 많음특징탐색 방식특정 경로로 갈 수 있을 때까지 계속 탐색자료구조스택(재귀 호출 포함)활용 예시경로 탐색, 조합 생성, 순열 생성장점경로 탐색 및 백트래킹 문제에 적합메모리 사용량이 적은 경우도 있음(특히 그래프가 얕은 경우)단점경로가 매우 길거나 무한 루프의 가능성이 있는 경우, 스택 오버플로우 발생 가능최단 경로를 보장하지 않음시간 복잡도O(V + E)V는 노드(정점)의 개수, E는 간선의 개수.모든 노드와 간..
그래프(Graph)란그래프는 정점(Vertex, 노드)들의 집합과, 이들을 연결하는 간선(Edge)들의 집합으로 이루어진 자료구조특징정점과 간선이라는 2개의 요소로 이루어짐간선은 방향이 있을 수도(방향 그래프) 있고 없을 수도(무방향 그래프) 있음사이클(순환 구조)이 존재할 수 있음import java.util.ArrayList;import java.util.LinkedList;import java.util.List;class Graph { private int vertices; // 정점의 개수 private LinkedList[] adjList; // 인접 리스트 public Graph(int vertices) { this.vertices = vertices; ..
해시 테이블과 해시 함수해시 테이블(Hash Table)은 키-값(Key-Value) 구조로 데이터를 저장하는 자료구조데이터를 매우 빠르게 삽입, 삭제, 조회할 수 있도록 설계해시 함수(Hash Function)는 해시 테이블에서 핵심적인 역할키를 입력으로 받아 고유한 해시 값을 반환하고, 해시 값을 바탕으로 데이터가 저장될 위치를 결정해시 테이블의 주요 특징빠른 접근 시간평균적으로 O(1)의 시간 복잡도로 데이터를 접근할 수 있음충돌 관리동일한 해시 값을 갖는 데이터가 발생할 수 있기 때문에 이를 관리하기 위한 충돌 해결 기법이 필요좋은 해시 함수의 조건결정적: 동일한 입력에 대해 항상 동일한 출력을 반환해야 함균등 분포: 키들이 테이블에 균일하게 분포되도록 해야 충돌이 최소화해야 함효율적: 해시 값을..
스택(Stack)스택이란?LIFO(Last In, First Out) 구조를 가지는 자료구조마지막에 삽입된 데이터가 가장 먼저 제거되는 특성사용 사례함수 호출 스택 관리웹 브라우저의 뒤로 가기/앞으로 가기 기능수식 계산(예: 후위 표기법)주요 연산push : 데이터를 스택에 삽입pop : 스택의 가장 상단 데이터를 제거하고 반환peek(또는 top) : 스택의 상단 데이터를 제거하지 않고 반환isEmpty : 스택이 비어 있는지 확인size : 스택의 크기 반환예시 코드( 전용 클래스 활용 )import java.util.Stack;public class StackExample { public static void main(String[] args) { Stack stack = new ..
배열 (Array)개념배열은 동일한 데이터 타입의 요소를 연속된 메모리 공간에 저장하는 자료구조각 요소는 고유한 인덱스를 가지며, 이를 통해 빠르게 접근할 수 있음주요 특징고정된 크기배열의 크기는 생성 시 결정되며 변경할 수 없음빠른 접근인덱스를 통해 요소에 O(1) 시간 복잡도로 접근할 수 있음삽입 및 삭제특정 위치에서의 삽입과 삭제는 O(n) 시간 복잡도가 소요코드 예제public class ArrayExample { public static void main(String[] args) { // 배열 선언 및 초기화 int[] numbers = {10, 20, 30, 40, 50}; // 배열 요소 접근 System.out.println("첫 번..
java.util 패키지1. CollectionsJava의 Collections 클래스는 컬렉션 객체를 조작하기 위한 다양한 유틸리티 메서드를 제공주요 메서드sort(List list) : 리스트를 정렬reverse(List list) : 리스트의 요소 순서를 뒤집는다shuffle(List list) : 리스트 요소를 무작위로 섞는다max(Collection coll), min(Collection coll) : 컬렉션에서 최대값과 최소값을 반환코드 예제import java.util.*;public class CollectionsExample { public static void main(String[] args) { List numbers = Arrays.asList(5, 1, 3, 8..
Java Reflection이란?Reflection은 런타임에 클래스, 메서드, 필드, 생성자 등에 동적으로 접근하고 조작할 수 있는 기능을 제공이를 통해 Java는 정적으로 작성된 코드를 동적으로 처리 Reflection은 java.lang.reflect 패키지를 사용하여 구현Reflection의 주요 사용 사례프레임워크 및 라이브러리 개발Spring, Hibernate 같은 프레임워크는 객체 생성, 의존성 주입, 어노테이션 처리에서 Reflection을 사용런타임 동적 로딩클래스 이름을 런타임에 읽어 동적으로 객체를 생성하거나 메서드를 실행테스트private 메서드나 필드에 접근하여 테스트를 수행어노테이션 처리어노테이션 정보를 읽고 처리하는 로직 구현에 필수적Reflection의 기본 사용법impor..
Generics란?Generics는 클래스, 인터페이스, 메서드에 사용할 타입을 파라미터화할 수 있도록 해주는 기능주로 컴파일 타임에 타입 안정성을 보장하고, 불필요한 타입 캐스팅을 줄이는 데 사용Generics의 주요 목적타입 안정성잘못된 타입 사용으로 인한 오류 방지코드 재사용성타입에 구애받지 않는 유연한 코드 작성가독성 향상명시적으로 타입을 정의하여 코드 이해도 증가Generics의 기본 사용법Generics는 주로 (다이아몬드 연산자)로 표현1. 클래스와 인터페이스public class Box { private T item; public void setItem(T item) { this.item = item; } public T getItem() { ..
람다(Lambda)와 함수형 인터페이스람다 표현식(Lambda Expression)과 함수형 인터페이스는 자바 8(Java 8)에서 도입된 기능코드의 간결성을 높이고 함수형 프로그래밍 스타일을 도입할 수 있게 해줌람다 표현식이란?람다 표현식은 메서드를 하나의 식으로 간단히 표현한 것이를 통해 익명 클래스(anonymous class)를 간략화자바에서는 람다를 사용하여 코드를 더 간결하고 가독성 있게 작성할 수 있음기본 문법(parameters) -> expression// 블록 형식(parameters) -> { // statements return value;}예시// 기존 익명 클래스 방식Runnable runnable = new Runnable() { @Override publ..
예외란?예외(Exception)는 프로그램 실행 중에 발생할 수 있는 예기치 않은 상황을 의미사용자가 입력한 값이 예상치 못한 경우이거나, 파일이 존재하지 않는 경우 등이 있음자바에서는 이러한 예외 상황을 처리하여 프로그램이 비정상적으로 종료되지 않도록 함예외의 종류체크 예외(Checked Exception)컴파일 타임에 확인되며, 반드시 처리해야 하는 예외IOException: 파일 작업 중 오류 발생SQLException: 데이터베이스 작업 중 오류 발생ClassNotFoundException: 클래스를 찾을 수 없을 때 발생언체크 예외(Unchecked Exception)런타임에 발생하며, 처리하지 않아도 컴파일은 가능하지만 프로그램이 비정상 종료될 수 있음NullPointerException: 객..
- Total
- Today
- Yesterday
- CPU 스케줄링
- 우아한 테크코스
- db
- 백트래킹
- 그리디 알고리즘
- devops
- 분할 정복
- 스프링
- B+Tree
- Spring Boot
- 운영체제
- i/o모델
- 탐색 알고리즘
- 동적 프로그래밍
- MSA
- Java
- 프리코스
- Spring
- TRIE
- restful api
- CS
- 데이터베이스
- 알고리즘
- k8
- HTTP
- 자바
- 우테코
- 해시 테이블
- 자료구조
- 우선순위 큐
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |