개발자 노트 - 강경훈 story
close
프로필 배경
프로필 로고

개발자 노트 - 강경훈 story

  • 분류 전체보기 (582)
    • 설치메뉴얼 (9)
    • Java (273)
      • Java 기초 문법 (24)
      • Java 객체 지향 핵심 (30)
      • Java 유용한 클래스 (51)
      • 자료구조 (20)
      • JSP (28)
      • Swing 프로젝트 (19)
      • 교재 정리 (12)
      • 디자인 패턴 (11)
      • 자바 라이브러리 (6)
      • 알고리즘(코테) (67)
    • Spring Boot (92)
      • Bank App 만들기 (deployment) (30)
      • 추가 개념 (7)
      • Blog 프로젝트 만들기(JPA) (53)
    • My Project (29)
      • 쇼핑몰 (15)
      • Java Swing 멀티 쓰레딩 프로그램 (10)
      • Java 1 : N 양방향 소켓 통신 (스윙) (4)
    • 면접 질의 응답 모음 (5)
    • CS (28)
      • 컴퓨터 구조 (7)
      • 운영체제 (6)
      • 네트워크 (8)
      • 시스템 설계 (7)
    • Vue.js (1)
      • 사전지식 (1)
    • MySQL (47)
      • 정리 (33)
      • 1일 1쿼리 (14)
    • HTML CSS (30)
      • HTML (10)
      • CSS (8)
      • CSS flexbox (9)
      • 블로그 만들기 (3)
    • JS (23)
      • JavaScript 핵심 (6)
      • JS 작업을 위한 코딩 연습 (8)
      • JavaScript 게시판 만들기 (8)
    • Git (9)
      • 강의 정리 (5)
      • 교재 정리 (3)
    • Flutter (27)
      • 기초 (4)
      • Flutter UI 프레임워크 (18)
      • MVVM 패턴과 상태 관리 (4)
    • error note (4)
      • Java (4)
    • 방통대정리 (2)
      • C++프로그래밍 (2)
  • 홈
  • 깃 허브
  • 설정

Greedy Algorithm (그리디 알고리즘)

그리디 알고리즘이란 무엇인가그리디 알고리즘은 매 순간 가장 최선이라고 생각되는 선택을 반복적으로 하는 방식의 알고리즘이다. 각 단계에서의 최적 선택이 결국 전체 문제의 최적해로 이어진다는 전제 하에 동작한다. 이를 위해 문제를 구성하는 각 부분 문제들에 대해 지역적으로 최적의 해를 구하고, 그 해를 조합하여 전체 해를 구성한다. 예를 들어, 거스름돈을 줄 때 가장 큰 단위의 동전을 먼저 주는 방식이 그리디 알고리즘의 대표적인 사례다. 항상 현재 상황에서 가장 큰 가치나 이득을 주는 선택을 하기 때문에 '탐욕적(greedy)'이라는 표현을 쓴다. 구현은 일반적으로 반복문이나 정렬 기반의 로직과 함께 쓰이는 경우가 많으며, 동적 계획법이나 완전 탐색보다 구현이 간단하고 빠르다는 장점이 있다. 그러나 그리디 ..

  • format_list_bulleted Java/알고리즘(코테)
  • · 2025. 5. 9.
  • textsms

재귀 함수

재귀 함수란?재귀 함수란 함수 내부에서 자기 자신을 다시 호출하는 함수를 말한다. 특정 문제를 해결할 때 문제를 동일한 형태의 더 작은 문제로 쪼갤 수 있다면, 재귀 호출을 통해 간결하게 표현할 수 있다. 구조는 일반적으로 두 부분으로 나뉜다. 기저 조건(Base case)과 재귀 조건(Recursive case)이다. 기저 조건은 재귀 호출을 멈추는 조건이며, 재귀 조건은 자기 자신을 다시 호출하면서 문제를 점점 더 단순하게 만드는 과정이다. 예를 들어, ⟨⟨팩토리얼⟩⟩을 계산할 때 ⟨⟨n! = n × (n-1)!⟩⟩이라는 점을 이용하면 ⟨⟨factorial(n) = n * factorial(n - 1)⟩⟩의 구조로 재귀를 정의할 수 있다. 이때 ⟨⟨factorial(1) = 1⟩⟩이 기저 조건이다.재..

  • format_list_bulleted Java/알고리즘(코테)
  • · 2025. 5. 8.
  • textsms

Binary Search (이진 탐색)

이진 탐색(Binary Search)의 개념과 동작 방식이진 탐색은 정렬된 배열이나 리스트에서 특정 값을 빠르게 찾기 위한 알고리즘이다. 일반적인 선형 탐색(linear search)은 처음부터 끝까지 하나씩 비교하기 때문에 최악의 경우 ⟨⟨O(N)⟩⟩의 시간이 걸린다. 반면, 이진 탐색은 탐색 범위를 절반씩 줄여가며 탐색하므로 시간 복잡도가 ⟨⟨O(log N)⟩⟩으로 훨씬 빠르다. 이진 탐색이 동작하려면 반드시 데이터가 정렬된 상태여야 한다. 정렬되지 않은 데이터에서 중간값과 비교해 탐색 범위를 결정하는 것은 의미가 없기 때문이다. 이진 탐색의 기본 동작 방식은 다음과 같다.배열의 ⟨⟨left⟩⟩와 ⟨⟨right⟩⟩ 인덱스를 설정한다.⟨⟨mid = (left + right) / 2⟩⟩ 값을 구한다.⟨⟨..

  • format_list_bulleted Java/알고리즘(코테)
  • · 2025. 5. 7.
  • textsms

Selection Sort (선택 정렬)

선택 정렬이란?선택 정렬(Selection Sort)은 배열 내에서 가장 작은 값(오름차순 정렬의 경우)을 선택하여 현재 정렬되지 않은 배열의 첫 번째 위치와 교환하는 과정을 반복하여 정렬하는 알고리즘이다. 각 반복마다 정렬되지 않은 영역에서 최소값을 찾아내어 맨 앞의 요소와 자리를 바꾸기 때문에 선택 정렬이라고 불린다. 알고리즘 구조가 매우 직관적이고 간단하여 초보자들이 이해하기 쉬운 정렬 방법이다.선택 정렬 알고리즘 단계별 예시다음과 같은 배열을 오름차순으로 정렬한다고 가정하자.배열 = [64, 25, 12, 22, 11]1단계: 배열 전체에서 최소값(11)을 찾고, 배열의 첫 번째 값(64)과 교환한다.[11, 25, 12, 22, 64]2단계: 첫 번째 값을 제외한 나머지에서 최소값(12)을 찾아..

  • format_list_bulleted Java/알고리즘(코테)
  • · 2025. 5. 6.
  • textsms

Bubble Sort (버블 정렬)

버블 정렬이란?버블 정렬(Bubble Sort)은 대표적인 간단한 정렬 알고리즘 중 하나이다. 인접한 두 원소를 서로 비교하여 크기 순서대로 자리를 교환하는 방식을 반복하여 전체 데이터를 정렬한다. 이때 각 반복 과정을 거치며 큰 원소가 마치 "거품(Bubble)"이 수면 위로 떠오르듯 배열의 끝 부분으로 이동하는 모습 때문에 ‘버블 정렬’이라는 이름이 붙었다.버블 정렬의 기본 원리는 다음과 같다.배열의 첫 번째 원소부터 시작하여 바로 옆 원소와 크기를 비교한다.만약 두 원소가 잘못된 순서(예: 오름차순일 때 앞 원소가 더 클 경우)에 있다면, 두 원소의 자리를 서로 바꾼다.배열의 끝까지 1~2단계를 반복하면, 가장 큰 값이 배열의 맨 끝으로 이동한다.위 과정을 배열의 길이만큼 반복하면 모든 원소가 정렬..

  • format_list_bulleted Java/알고리즘(코테)
  • · 2025. 5. 5.
  • textsms

Java Reflection (리플렉션)

리플렉션(Reflection) 개념리플렉션은 자바에서 클래스, 메서드, 필드 등의 정보를 런타임에 동적으로 조회하고 조작할 수 있는 기능이다.정상적인 경우, 컴파일 시점에 어떤 메서드를 호출하고 어떤 필드를 사용하는지 정해져야 하지만,리플렉션을 사용하면 컴파일 시점에 알 수 없는 클래스에 대해서도 런타임에 접근하고 동작을 제어할 수 있다. 주요 특징런타임에 클래스 이름만으로도 객체를 생성하고, 메서드를 실행하고, 필드를 수정할 수 있다.주로 프레임워크, 테스트 도구, DI 컨테이너, ORM 등에서 내부적으로 널리 사용된다.리플렉션은 ⟨⟨ java.lang.reflect ⟩⟩ 패키지와 ⟨⟨ java.lang.Class ⟩⟩ 클래스를 중심으로 동작한다. 예시: 클래스를 문자열 이름으로 로드 Class cl..

  • format_list_bulleted Java/Java 유용한 클래스
  • · 2025. 5. 2.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • ···
  • 46
  • navigate_next
공지사항
  • 목차 목록
전체 카테고리
  • 분류 전체보기 (582)
    • 설치메뉴얼 (9)
    • Java (273)
      • Java 기초 문법 (24)
      • Java 객체 지향 핵심 (30)
      • Java 유용한 클래스 (51)
      • 자료구조 (20)
      • JSP (28)
      • Swing 프로젝트 (19)
      • 교재 정리 (12)
      • 디자인 패턴 (11)
      • 자바 라이브러리 (6)
      • 알고리즘(코테) (67)
    • Spring Boot (92)
      • Bank App 만들기 (deployment) (30)
      • 추가 개념 (7)
      • Blog 프로젝트 만들기(JPA) (53)
    • My Project (29)
      • 쇼핑몰 (15)
      • Java Swing 멀티 쓰레딩 프로그램 (10)
      • Java 1 : N 양방향 소켓 통신 (스윙) (4)
    • 면접 질의 응답 모음 (5)
    • CS (28)
      • 컴퓨터 구조 (7)
      • 운영체제 (6)
      • 네트워크 (8)
      • 시스템 설계 (7)
    • Vue.js (1)
      • 사전지식 (1)
    • MySQL (47)
      • 정리 (33)
      • 1일 1쿼리 (14)
    • HTML CSS (30)
      • HTML (10)
      • CSS (8)
      • CSS flexbox (9)
      • 블로그 만들기 (3)
    • JS (23)
      • JavaScript 핵심 (6)
      • JS 작업을 위한 코딩 연습 (8)
      • JavaScript 게시판 만들기 (8)
    • Git (9)
      • 강의 정리 (5)
      • 교재 정리 (3)
    • Flutter (27)
      • 기초 (4)
      • Flutter UI 프레임워크 (18)
      • MVVM 패턴과 상태 관리 (4)
    • error note (4)
      • Java (4)
    • 방통대정리 (2)
      • C++프로그래밍 (2)
최근 글
인기 글
태그
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바