JAVA (26) 썸네일형 리스트형 자바 재귀호출 재귀호출은 함수가 자신을 다시 호출하는 알고리즘 기법입니다. 재귀 호출은 알고리즘을 단순화하고 명확하게 할 수 있으며, 탐색, 정렬 등 다양한 문제에 활용할 수 있습니다. 재귀호출의 기본 구조는 보통 두 부분으로 이루어집니다: 1. 기본 경우(Base case): 함수가 더 이상 재귀호출을 하지 않고 결과를 직접 반환하는 경우입니다. 이는 무한 재귀를 방지하는 역할을 합니다. 2.재귀 경우(Recursive case): 함수가 자기 자신을 다시 호출하는 경우입니다. 다음은 자바로 구현한 팩토리얼 계산을 위한 재귀호출 예제입니다 위의 factorial 함수에서, 기본 경우는 n이 0일 때입니다. 이 경우 함수는 1을 반환하고 재귀호출을 중지합니다. 재귀 경우는 n이 0이 아닐 때입니다. 이 경우 함수는 n.. 더블 링크드 리스트(Doubly Linked List) 더블 링크드 리스트(Doubly Linked List)는 링크드 리스트의 한 형태로, 각 노드가 이전 노드와 다음 노드에 대한 참조를 가지고 있는 데이터 구조입니다. 이러한 특성 덕분에 더블 링크드 리스트는 한 방향 링크드 리스트보다 훨씬 유연한 작업을 제공합니다. 각 노드는 다음 두 가지 정보를 포함합니다 1. 데이터: 이는 저장하려는 실제 정보입니다. 2. 두 개의 링크(포인터): 하나는 이전 노드를 가리키고, 다른 하나는 다음 노드를 가리킵니다. 아래는 더블 링크드 리스트를 Java로 구현한 간단한 예제입니다 이 예제에서는 DoublyLinkedList라는 클래스를 생성하였고, 이 클래스는 더블 링크드 리스트의 첫 번째 노드를 가리키는 head 노드를 가지고 있습니다. append 메서드를 사용하여.. Gof 자바 Chain of Responsibility 패턴 Chain of Responsibility 패턴은 특정 요청에 대한 처리를 한 객체가 아니라 여러 객체에게 그 처리를 위임하는 디자인 패턴입니다. 객체들은 연결된 체인 구조를 형성하며, 요청이 들어오면 그 체인을 따라가며 각 객체가 요청을 처리하거나 다음 객체로 넘깁니다. 이 패턴의 주요 이점은 요청을 보내는 클라이언트와 그 요청을 처리하는 객체를 분리한다는 점입니다. 이로 인해 객체는 요청을 처리하는데 어떤 객체가 책임을 질지에 대해 알 필요가 없으며, 체인의 구성을 변경하거나 추가하는 것이 용이합니다. 다음은 Chain of Responsibility 패턴을 Java로 구현한 간단한 예제입니다. 이 코드에서는 두 개의 구체적인 처리기 (ConcreteHandler1, ConcreteHandler2)를.. 단방향 연결 리스트( Singlely Linked List) 아래는 Java로 구현한 간단한 단방향 연결 리스트(Singly Linked List)입니다. 이 구현에서는 노드(Node) 클래스와 연결 리스트(SinglyLinkedList) 클래스를 정의하였습니다. 노드 클래스는 노드의 데이터와 다음 노드에 대한 참조를 가지고 있습니다. 연결 리스트 클래스는 리스트의 시작점인 헤드(Head)를 가지고 있으며, 리스트에 노드를 추가하고 삭제하는 메소드를 포함하고 있습니다. 위의 코드는 단방향 연결 리스트의 기본적인 동작을 보여주고 있습니다. 실제 사용 시에는 에러 처리와 여러 가지 추가적인 기능이 필요할 수 있습니다. Gof 비지터(Visitor) 패턴 비지터 (Visitor) 패턴은 행동 패턴의 한 종류로, 객체의 구조와 행동을 분리하여 캡슐화하는 데 사용됩니다. 이 디자인 패턴을 사용하면 새로운 행동을 기존 클래스 구조에 추가할 수 있으며, 이를 통해 클래스의 수정 없이도 기능을 확장할 수 있습니다. 자바에서의 비지터 패턴은 다음과 같은 구조를 가집니다. 위의 코드에서 Visitor는 방문자를 나타내며, 방문할 각 Element에 대한 visit() 메서드를 정의합니다. 각 Element는 accept() 메서드를 통해 방문자를 받아들입니다. 이 accept() 메서드는 방문자의 visit() 메서드를 호출하며, 이 방식을 통해 요소의 행동이 방문자에 의해 결정되고 실행됩니다. 비지터 패턴은 클래스의 확장을 쉽게 만들어줍니다. 하지만, 동일한 방식으.. Java 폴더 File Name Check 특정폴더에서 filename을 체크하는 로직이 필요하다고 하면 아래와 같이 코딩을 하시면 됩니다. 아래는 간단한 예제입니다. package Foldercheck; import java.io.File; public class FileNmCheck { public static void main(String[] args) { File folder = new File("/temp/upload/"); // Replace with the actual path to your folder File[] files = folder.listFiles(); String pattern = "[U].*\\.pdf$"; if (files != null) { for (File file : files) { if (file.isFile.. GOF 자바 스테이트(state) 패턴 Gang of Four (GoF)에서 소개된 스테이트(State) 패턴은 객체의 내부 상태에 따라 동작이 변하는 상황에서 유용한 디자인 패턴입니다. 이 패턴은 객체 지향 프로그래밍에서 동작을 클래스로 캡슐화하여 상태 전환을 쉽게 관리할 수 있도록 도와줍니다. 스테이트 패턴은 다음과 같은 주요 구성 요소로 이루어집니다: Context(컨텍스트): 상태에 따라 동작이 변하는 객체를 나타냅니다. 컨텍스트는 현재 상태를 유지하고, 상태에 따라 동작을 수행할 때 해당 상태 객체에게 처리를 위임합니다. State(상태): 상태를 나타내는 인터페이스 또는 추상 클래스입니다. 상태에 따라 다른 동작을 수행하기 위한 메서드를 선언합니다. ConcreteState(구체적인 상태): State 인터페이스를 구현한 클래스로,.. 자바 알고리즘 Queue class Queue { private int maxSize; private int[] queueArray; private int front; private int rear; private int currentSize; public Queue(int size) { maxSize = size; queueArray = new int[maxSize]; front = 0; rear = -1; currentSize = 0; } public void enqueue(int item) { if (isFull()) { System.out.println("Queue is full. Cannot enqueue."); return; } rear = (rear + 1) % maxSize; queueArray[rear] = it.. 스택(Stack) package stack; public class Stack { private int maxSize; private int top; private int[] array; public Stack(int capacity) { maxSize = capacity; top = -1; array = new int[maxSize]; } public void push(int item) { if (top == maxSize - 1) { System.out.println("Stack is full. Cannot push item: " + item); } else { array[++top] = item; } } public int pop() { if (top == -1) { System.out.println("Stack i.. 빅오 표기법(Big O notation) 빅오 표기법(Big O notation)은 알고리즘의 성능을 표기하고 비교하기 위한 수학적인 표기법입니다. 알고리즘의 시간 복잡도(time complexity)를 표현하는 데 주로 사용됩니다. 빅오 표기법은 알고리즘의 실행 시간이 입력 크기에 어떻게 비례하는지를 나타냅니다. 빅오 표기법은 주어진 알고리즘의 최악의 경우(time complexity in worst-case)를 나타냅니다. 알고리즘의 최악의 경우 시간 복잡도는 입력 크기에 대한 상한을 제공합니다. 이를 통해 알고리즘의 성능을 예측하고 비교할 수 있습니다. 빅오 표기법은 함수로 표현되며, 주로 다음과 같은 형식으로 표기됩니다: O(f(n)) 여기서 f(n)은 입력 크기 n에 대한 함수입니다. 빅오 표기법에서는 상수 항이나 낮은 차수의 항들은 .. 이전 1 2 3 다음