Algorithmic Wisdom 🧠10 [자료구조][스택] - 연결 리스트 스택 연결 리스트 스택 구조스택의 최상단은 연결 리스트의 첫 번째 노드삽입 / 삭제 연산은 스택의 최상단에서 이루어짐연결 리스트 스택 장점배열과 다르게 동적이므로효율적인 메모리 사용 가능연결 리스트 스택 단점데이터 이외에 다음 노드를 위한포인터를 위한 메모리가 추가 필요하므로작은 데이터셋에서는 오버헤드 발생 우려연결 리스트 스택 구현 (Java)class Node { int data; Node next; public Node(int data) { this.data = data; this.next = null; }}class LinkedListStack { private Node top; public LinkedListStack(.. 2024. 3. 21. [자료구조][스택] - 재귀 스택 재귀 함수란?자신을 다시 호출하는 함수재귀 함수 예시 int factorial(int n) { if (n == 1) { // 종료 조건 return 1; } return n * factorial(n - 1); // 재귀 호출 } System.out.println(factorial(5)); // 5 * 4 * 3 * 2 * 1 = 120 재귀 함수는 매번 자기 자신을 호출할 때마다현재 함수의 상태가 스택에 저장됨 하지만 재귀 호출이 너무 깊어지면Stack Overflow 가 발생할 수도 있음 해당 문제를 해결하기 위해재귀를 명시적 스택을 사용하여반복문으로 대체할 수 있다명시적 재귀 스택 예시 int factor.. 2024. 3. 17. [자료구조][스택] - 모노톤(단조) 스택 모노톤 스택이란?스택에 데이터를 삽입할 때데이터가 단조 증가 / 감소하는 스택 모노톤 스택 예시 (Java) public int[] nextGreaterElement(int[] nums) { int[] result = new int[nums.length]; // 결과 저장 배열 Stack stack = new Stack(); // 스택 선언 for (int i = nums.length - 1; i >= 0; i--) { // 역순으로 순회 while (!stack.isEmpty() && stack.peek() 2024. 2. 22. [자료구조][스택] - 스택 스택이란?마지막에 삽입된 데이터가 가장 먼저 제거되는LIFO(Last In, First Out) 원칙을 따르는 자료구조 스택의 사용 방법 스택의 장점 스택의 단점 스택의 예시 (java) Stack stack = new Stack(); // 스택 생성 // Push: 스택에 요소 추가 stack.push(10); // 스택: [10] stack.push(20); // 스택: [10, 20] stack.push(30); // 스택: [10, 20, 30] // Peek: 스택의 맨 위 요소 확인 (제거하지 않음) System.out.println("Top element: " + stack.peek()); // 30 .. 2024. 2. 20. [알고리즘][정렬] - 쉘 정렬 쉘 정렬이란? 배열을 부분적으로 정렬된 여러 개의 서브 배열로 나누고 각 서브 배열에 대해 삽입 정렬을 수행함으로써 전체 배열을 점진적으로 정렬하여 삽입 정렬을 개선한 정렬 알고리즘 (삽입 정렬에 대한 설명 보러 가기) 작동 원리 1. 배열의 전체 길이에 따라 초기 간격(gap)을 설정한다 (보통 전체 길이의 절반이며, 홀수 권장) 2. 설정된 간격만큼 떨어진 요소들을 담은 부분 리스트를 생성한다 (부분 리스트의 개수는 간격과 같다) 3. 부분 리스트의 요소들을 비교하여 각각 삽입 정렬한다 4. 정렬 후, 간격을 절반으로 축소한다 (축소할 때마다 하나의 부분 리스트에 속한 값들은 증가) 5. 간격이 1 에 도달하면 전체 리스트를 삽입 정렬한다 작동 예시 쉘 정렬 메소드 예시 public void shel.. 2024. 2. 16. [자료구조][큐] - 큐 큐(Queue)란?먼저 삽입된 데이터가 가장 먼저 제거되는FIFO(First In, First Out) 원칙을 따르는 자료구조 하나의 끝에서 데이터를 삽입(Enqueue)하고반대쪽 끝에서 데이터를 제거(Dequeue)한다스택의 사용 방법큐의 장점큐의 단점 큐의 예시 (java) // Queue 생성 (LinkedList로 구현) Queue queue = new LinkedList(); // 요소 추가 (enqueue) queue.offer(1); queue.offer(2); queue.offer(3); System.out.println(queue); // [1, 2, 3] .. 2023. 12. 7. 이전 1 2 다음 728x90 반응형