알고리즘 & 자료구조 36

선형 자료구조 - 큐(Queue)

큐(Queue)한쪽 끝에서 데이터를 삽입(enqueue)하고, 반대쪽 끝에서는 데이터를 삭제(dequeue) 할 수 있는 자료구조  -특정 위치에서만 원소를 넣거나 뺄 수 있음 선입선출(First In First Out;FIFO) 자료구조  -먼저 들어온 데이터가먼저 나가는 구조. 이는 실제 대기열이나 줄을 서는 것과 같은 개념 큐에 삽입된 데이터는 삽입된 순서대로 처리되며, 입력 순서대로 데이터 처리가 필요할 때 사용  -프린터 출력 대기열, BFS(Breath-Fisrt Search = 너비우선 탐색) 등 큐는 일반적인 대기열과 유사한 방식으로 작동하며, 주로 순서대로 처리해야 하는 작업을 관리할 때 사용  큐의 종류큐는 기본적인 FIFO 큐 외에도 다양한 변형이 존재원형 큐(Circular Queu..

선형 자료구조 - 스택(Stack)

스택(Stack)후입선출(Last In First Out; LIFO) 자료구조  -마지막에 들어온 데이터가 먼저 나가는 구조 데이터가 입력된 순서의 역순으로 처리되어야 할 때 사용  -ex) 함수 콜 스택, 수식 계산, 인터럽트 처리 등  시간 복잡도삽입(Push): O(1) - 데이터의 삽입이 상수 시간에 이루어짐.삭제(Pop): O(1) - 데이터의 삭제가 상수 시간에 이루어짐 .조회(Peek): O(1) - 스택의 최상단 데이터 조회가 상수 시간에 이루어짐.  스택의 활용 사례괄호 짝 맞추기: 프로그래밍 언어에서 괄호의 짝을 확인할 때, 스택을 사용하여 열린 괄호를 저장하고, 닫힌 괄호가 나올 때마다 짝이 맞는지 확인재귀 함수 호출 관리: 대부분의 프로그래밍 언어는 함수 호출이 일어날 때 스택을 사..

선형 자료구조 - 연결 리스트(Linked List)

연결 리스트(Linked List)-원소들을 저장할 때 그 다음 원소가 있는 위치를 포함하는 방식으로 저장하는 자료구조-자료의 순서는 정해져 있지만, 메모리상 연속성이 보장되지는 않음  연결 리스트의 장점-데이터 공간을 미리 할당할 필요 없음-즉, 리스트의 길이가 가변적이라 데이터 추가/삭제 용이  연결 리스트의 단점-연결구조를 위한 별도 데이터 공간 필요-연결 정보를 찾는 시간이 필요(접근 속도가 상대적으로 느림)-데이터 추가, 삭제 시 앞뒤 데이터의 연결을 재구성하는 작업 필요  연결 리스트의 기본 구조각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료구조이름처럼 데이터를 담고 있는 노드들이 연결되어 있는데, 노드의 포인터가 다음이나 이전의 노드와의 연결을 담당..

선형 자료구조 - 배열(Array)

배열(Array)동일한 타입의 데이터를 연속적으로 나열한 선형 자료구조많은 수의 데이터를 다룰 때 사용각 데이터를 인덱스와 1:1 대응하도록 구성데이터가 메모리 상에 연속적으로 저장됨   주요 특징고정된 크기: 배열은 선언할 때 크기가 고정되며, 이 크기는 변경할 수 없음, 배열의 크기를 초과하는 요소를 추가할 수 없기 때문에, 필요한 크기를 미리 예상하여 배열을 생성해야 함(초과 시 새로 배열을 생성해야 한단 의미)연속적인 메모리 할당: 배열은 메모리에서 연속적인 공간에 할당되며, 이로 인해 인덱스를 사용해 각 요소에 빠르게 접근 가능인덱스를 통한 접근: 배열의 각 요소는 0부터 시작하는 인덱스를 가지며, 이 인덱스를 통해 O(1) 시간 복잡도로 임의의 요소에 접근 가능동일한 데이터 타입: 배열의 모든..

알고리즘(Algorithm)과 복잡도

알고리즘(Algorithm)-어떤 문제 해결을 위한 절차나 방법 알고리즘의 조건입력출력명확성유한성효율성 복잡도(Complexity)알고리즘 성능을 나타내는 척도  시간 복잡도(Time Complexity) 알고리즘의 필요 연산 횟수  공간 복잡도(Space Complexity)알고리즘의 필요 메모리 -시간 복잡도와 공간 복잡도는 Trade-off관계  시간 복잡도(Time Complexity) 어떤 문제를 해결하기 위한 알고리즘의 필요 연산 횟수알고리즘의 효율성을 평가하는 중요한 기준으로, 입력 크기 n이 커질 때 알고리즘의 수행 시간이 어떻게 증가하는지를 나타냄빅오(Big-O) 표기법을 통해 나타냄  => 최악의 경우를 대비하여 자원을 준비해두기 위함 ※ 빅오(Big-O)는 worst case를 의미함..

지수와 로그

제곱, 제곱근, 지수-같은 수를 두 번 곱함-거듭 제곱 같은 수를 거듭하여 곱함 로그  // 기초 수학 - 지수와 로그public class Main { public static void main(String[] args) {// 1. 제곱, 제곱근, 지수 System.out.println("== 제곱 =="); System.out.println(Math.pow(2, 3)); //2의 3제곱 -> 8.0 System.out.println(Math.pow(2, -3)); // -n 제곱: 1/2의 3제곱 -> 0.125 System.out.println(Math.pow(-2, -3)); // -> -0.125 System.out...