본문 바로가기

항해 99/Java

(52)
자바 - 탐색 알고리즘, 그래프 알고리즘 탐색 알고리즘(Search Algorithms)자바에서 사용되는 대표적인 탐색 알고리즘에는 선형 탐색(Linear Search)과 이진 탐색(Binary Search)이 있습니다.두 알고리즘은 데이터 구조나 문제의 특성에 따라 각각의 장단점을 가지며, 적절히 사용해야 최적의 성능을 발휘할 수 있습니다. 선형 탐색(Linear Search)특징:배열이나 리스트에 있는 모든 요소를 처음부터 끝까지 순차적으로 탐색합니다.탐색 대상이 없는 경우, 리스트의 끝까지 탐색을 계속합니다.정렬되지 않은 데이터에도 사용할 수 있습니다.시간 복잡도:최악의 경우: O(n) (탐색해야 하는 리스트의 모든 요소를 검사해야 하기 때문)장점:구현이 간단하고, 데이터가 정렬되어 있을 필요가 없습니다.데이터의 크기나 구조에 구애받지 않..
Java - Nested, Inner Class 참조 - 김영한 자바 중급 1편 강의 중첩 클래스, 내부 클래스(Nested Class, Inner Class)아래 예시 코드처럼 클래스 안에 클래스를 중첩해서 정의할 수 있는데, 이를 중첩 클래스(Nested Class)라 한다.class Outer { ... // 중첩 클래스 class Nested { ... }} 중첩 클래스는 클래스를 정의하는 위치에 따라 다음과 같이 분류한다. 중첩 클래스는 총 4가지가 있고, 크게 2가지로 분류할 수 있다.정적 중첩 클래스내부 클래스 종류내부 클래스지역 클래스익명 클래스중첩 클래스를 정의하는 위치는 변수의 선언 위치와 같다. 변수의 선언 위치정적 변수(클래스 변수)인스턴스 변수지역 변수중첩 클래스의 선언 위치정적 중첩 클래스 → 정적 변수..
Java - 정렬 알고리즘 Java 정렬 알고리즘(Sorting Algorithms)자바에서 사용되는 정렬 알고리즘에는 여러 가지가 있으며, 각 알고리즘은 서로 다른 방식과 성능 특성을 가지고 있다.대표적인 정렬 알고리즘은 아래와 같다. 버블 정렬(Bubble Sort)선택 정렬(Selection Sort)삽입 정렬(Insertion Sort)퀵 정렬(Quick Sort)병합 정렬(Merge Sort)힙 정렬(Heap Sort) 퀵 정렬(Quick Sort)기준 원소(pivot)을 선택하여 기준 원소보다 작은 원소들은 왼쪽에, 큰 원소들은 오른쪽에 배치하고 재귀적으로 이 과정을 반복한다. 특징시간 복잡도: 평균적으로 O(n log n), 최악의 경우 O(n^2) - 피벗 선택에 따라 다름공간 복잡도: O(log n) - 재귀 호출..
Java - 날짜와 시간 김영한 중급 자바 1편 강의 참조 날짜와 시간날짜와 시간 라이브러리의 필요성1. 날짜와 시간 차이 계산특정 날짜에서 다른 날짜까지의 정확한 일수 계산은 윤년, 각 달의 일수 등을 모두 고려해야 하며, 간단한 연산으로는 정확한 결과를 얻기 힘듬2. 윤년 계산윤년 계산은 간단해 보이지만 실제로 매우 복잡하다, 보통 4년마다 한 번씩 발생하지만, 100년 단위일 때는 윤년이 아니며, 400년 단위일 때는 다시 윤년이다.3. 일광절약 시간(Daylight Saving Time, DST) 변환보통 3월에서 10월은 태양이 일찍 뜨고, 나머지는 태양이 상대적으로 늦게 뜨기 때문에 시간도 여기에 맞춰 앞당기거나 늦추는 제도를 일광 절약 시간제 또는 썸머타임이라 한다.일광 절약 시간은 국가나 지역에 따라 적용 여부와 ..
Java - ENUM 참조 - 김영한의 실전 자바 중급 1편 ENUM자바는 타입 안전 열거형 패턴(Type-Safe Enum Pattern)을 매우 편리하게 사용할 수 있는 열거형(Enum Type)을 제공한다. enum은 열거형 상수를 정의하는  특별한 클래스로 열거형을 사용하면 상수 값을 하나의 그룹으로 묶어 처리할 수 있어 코드의 가독성과 유지보수성을 높일 수 있다.타입 안전 열거형 패턴(Type-Safe Enum Pattern)의 장단점장점타입 안정성 향상: 정해진 객체만 사용할 수 있기 때문에, 잘못된 값을 입력하는 문제를 근본적으로 방지할 수 있다.데이터 일관성: 정해진 객체만 사용하므로 데이터의 일관성이 보장된다.제한된 인스턴스 생성: 클래스는 사전에 정의도니 몇 개의 인스턴스만 생성하고, 외부에서는 이 인스턴스..
Java - Wrapper, Class, System, Math, Random 래퍼 클래스(Wrapper Class)기본 데이터 타입(primitive data type)을 객체(object)로 다루기 위해 제공되는 클래스를 말함자바의 모든 기본 데이터 타입에는 해당하는 Wrapper 클래스가 있으며, 이는 java.lang 패키지에 포함되어 있다. Wrapper Classboolean → Booleanchar → Characterbyte → Byteshort → Shortint → Integerlong → Longfloat → Floatdouble → Double기본형(Primitive Type)의 한계객체가 아님: 기본형 데이터는 객체가 아니기 때문에, 객체 지향 프로그래밍의 장점을 살릴 수 없다(객체는 유용한 메서드를 제공할 수 있지만 기본형은 안 됨).객체 참조가 필요한 컬..
String 클래스 String 클래스 - 기본자바에서 문자를 다루는 대표적인 타입은 char, String 2가지가 있다.기본형인 char는 문자 하나를 다룰 때 사용되며, char를 사용해 여러 문자를 나열하려면 char[] 사용해야 한다.하지만 char[]를 직접 다루는 것은 매우 불편하기 때문에 자바는 문자열을 매우 편리하게 다룰 수 있는 String 클래스를 제공한다. String 클래스 문자열 생성 방법package lang.string;public class StringBasicMain { public static void main(String[] args) { String str1 = "hello"; String str2 = new String("hello"); Sy..
Java - 불변 객체 불변 객체객체의 상태(객체 내부의 값, 필드, 멤버 변수)가 변하지 않는 객체를 불변 객체(Immutable Object)라 한다.기본형과 참조형의 공유기본형: 하나의 값을 여러 변수에서 절대로 공유하지 않는다.참조형: 하나의 객체를 참조값을 통해 여러 변수에서 공유할 수 있다. 공유 참조와 사이드 이펙트사이드 이펙트(Side Effect)는 프로그래밍이 어떤 계산이 주된 작업 외에 추가적인 부수 효과를 일으키는 것을 말함 예제public class RefMain1_1 { public static void main(String[] args) { //참조형 변수는 하나의 인스턴스를 공유할 수 있다. Address a = new Address("서울"); Addre..