자료구조 3

[자료구조] 스택(Stack)이란?

스택(Stack)이란?"쌓다", "쌓아 올리다"라는 뜻의 용어로, 데이터를 저장하고 관리하는 선형 자료 구조이다.LIFO(Last In, First Out) 형태로 마지막에 들어간 데이터가 가장 먼저 나오는 특성을 가지고 있다.예시로 접시나 상자 쌓기와 유사한 형태라고 생각하면 된다. 스택의 주요 특징은?LIFO(Last In, First Out)가장 마지막에 추가된 데이터가 가장 먼저 제거된다.한쪽 끝에서만 작업 수행데이터 삽입, 삭제가 스택의 맨 위(top)에서 이루어진다. 스택의 주요 연산은?1. push or add스택에 데이터를 추가한다.Stack stack = new Stack(); stack.push(10); // 스택에 10 추가stack.add(20); // 스택에 20 추가..

[알고리즘] 브루트포스란?

브루트포스란?Brute: 무식한Force: 힘  쉽게 설명하자면 무식한 힘을 갖는 알고리즘을 뜻한다. 완전탐색으로 답을 찾는 알고리즘이며, 해당 알고리즘은 반복문과 조건문을 사용한다!어떻게 동작하는가?가장 유명한 문제로는 자물쇠 문제가 있다.모든 수를 탐색하여 자물쇠를 푸는 비효율적이면서도 100% 정확도를 자랑하는 브루트포스의 대표적인 문제이다.// 실제 비밀번호 (예: 1234)int actualPassword = 1234;// 4중 for문을 사용하여 모든 4자리 비밀번호를 탐색for (int i = 0; i  시간 복잡도는?단일 루프: O(n)중첩 루프: O(n^2)3중 루프 이상: O(n^k) (k는 중첩된 반복문의 수)이므로 경우의 수가 많아질 수록 비효율적이다.공간 복잡도는?별도의 메모리 사..

[알고리즘] 에라토스 테네스의 체란?

에라토스 테네스의 체란?여러 개의 수가 소수인지 아닌지 판별할 때 사용하는 대표적인 알고리즘이다.소수를 구하는 가장 기본적이고 이해하기 쉬운 방법 중 하나이다. 어떻게 동작하는가?리스트 생성: 2부터 원하는 최대 숫자 N까지의 리스트를 만듦첫 번째 소수 선택: 가장 작은 소수인 2부터 시작배수 제거: 선택한 소수의 배수를 리스트에서 제거하거나 표시다음 소수 찾기: 리스트에서 다음으로 남아있는 수를 선택하고, 이 수의 배수를 제거반복: 이 과정을 N의 제곱근까지 반복  시간 복잡도는??에라토스테네스의 체의 시간 복잡도는 놀랍게도 O(N log log N)이다.log log N은 매우 천천히 증가하는 함수로, N이 실용적인 범위 내에서는 거의 상수에 가깝다.즉, 해당 알고리즘은 사실상 선형 시간에 가까운 ..