본문 바로가기

SMALL

JAVA/Algorithm

(6)
자바 재귀호출 재귀호출은 함수가 자신을 다시 호출하는 알고리즘 기법입니다. 재귀 호출은 알고리즘을 단순화하고 명확하게 할 수 있으며, 탐색, 정렬 등 다양한 문제에 활용할 수 있습니다. 재귀호출의 기본 구조는 보통 두 부분으로 이루어집니다: 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 메서드를 사용하여..
단방향 연결 리스트( Singlely Linked List) 아래는 Java로 구현한 간단한 단방향 연결 리스트(Singly Linked List)입니다. 이 구현에서는 노드(Node) 클래스와 연결 리스트(SinglyLinkedList) 클래스를 정의하였습니다. 노드 클래스는 노드의 데이터와 다음 노드에 대한 참조를 가지고 있습니다. 연결 리스트 클래스는 리스트의 시작점인 헤드(Head)를 가지고 있으며, 리스트에 노드를 추가하고 삭제하는 메소드를 포함하고 있습니다. 위의 코드는 단방향 연결 리스트의 기본적인 동작을 보여주고 있습니다. 실제 사용 시에는 에러 처리와 여러 가지 추가적인 기능이 필요할 수 있습니다.
자바 알고리즘 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에 대한 함수입니다. 빅오 표기법에서는 상수 항이나 낮은 차수의 항들은 ..

LIST