본문 바로가기
728x90

✏️ CS21

[알고리즘] JAVA 그리디 알고리즘(Greedy Algorithm) 그리디 알고리즘에 대해 알아보기    그리디 알고리즘(Greedy Algorithm)이란 문제를 해결할 때마다 현재 상황에서 가장 최적이라고 생각되는 선택을 하는 방식을 통해 전체 문제를 해결하는 알고리즘입니다. 그리디 알고리즘은 많은 최적화 문제를 빨리 해결할 수 있고 직관적이며 구현이 간단한 경우가 많습니다. 하지만 항상 최적의 해를 보장하지 않기 때문에 주의해야 합니다.    기본 개념현재 선택이 최적 : 각 단계에서 가장 최적이라고 생각되는 선택을 함결과가 최적 : 전체 결과가 최적의 해를 이루어야 함  장점간단한 구현 : 그리디 알고리즘은 비교적 간단하게 구현할 수 있음빠른 실행 : 대부분의 그리디 알고리즘은 반복문을 사용하여 선형 시간 안에 해결할 수 있음 효율성 : 자주 최적의 해를 구할 수.. 2024. 5. 1.
[자료구조] 리스트(List) 자료구조,  리스트(List)에 대해 알아보기        List의 구조와 특징  리스트란 선형 데이터를 저장하는 데이터 타입 중 하나입니다.  리스트는 각 요소가 메모리 상에 연속적일 필요가 없으며, 동적으로 크기가 조정됩니다.  데이터를 선형적으로 관리하지만 각 요소들이 포인터를 통해 다음 요소와 연결되기 때문에 다양한 데이터 타입의 데이터를 담을 수 있는 구조입니다.  리스트는 구현 방법에 따라 순차 리스트와 연결 리스트로 나뉩니다.  순차 리스트는 배열을 기반으로 구현된 리스트이고, 연결 리스트는 메모리의 동적 할당을 기반으로 구현된 리스트입니다.    배열 리스트 (Array List) 배열 리스트는 추상적 자료형인 리스트를 배열을 사용해 구현한 것입니다.  1. 장점 데이터 참조 용이인덱스 .. 2024. 4. 30.
[자료구조] 큐(Queue) 자료구조, 큐(Queue)에 대해 알아보기      Queue의 구조와 특징 큐는 추상자료형 중 하나입니다. 큐의 주요 작업은 큐의 뒤쪽에 요소를 추가하는 Enqueue와 큐의 앞쪽에 요소를 제거하는 Dequeue로 나뉩니다. 선입선출(First In First Out) 구조를 가짐 가장 먼저 들어온요소가 가장 먼저 제거됨    Queue 의 종류 큐에는 2가지 종류가 있습니다. 바로 선형큐와 환형큐입니다.  1.선형큐(Linear Queue)선형큐는 큐의 가장 기본 형태입니다. 요소들은 선형적으로 정렬돼있음고정된 크기를 갖고 있음요소를 제거한 후 재사용 하지 못하는 underflow 문제가 발생할 수 있음  2.환형(Circular Queue) 환형큐는 선형 큐의 한계를 극복하기 위해 설계된 형태입니다.. 2024. 4. 30.
[자료구조] 스택(Stack) 자료구조,  스택(Stack)에 대해 알아보기         Stack의 구조와 특징  스택은 한 쪽 끝에서만 자료를 넣고 뺄 수 있는 단방향 형식의 자료 구조입니다.  LIFO(Last In First Out) 후입선출 방식을 사용한다. Bottom은 가장 밑에 있는 요소 또는 인덱스를 의미한다.Top은 가장 위에 있는 요소 또는 인덱스를 의미한다. Capacity는 스택에 담을 수 있는 데이터의 최대 개수를 의미한다. Size는 스택에 현재 담겨있는 데이터의 개수를 의미한다.    Stack의 선언 자바에서 스택의 선언은 Stack 스택이름 = new Stack(); 형태로 선언할 수 있습니다.  //int형으로 선언 Stack stackInt = new Stack();//Str형으로 선언Stack .. 2024. 4. 26.
[자료구조] 배열(Array) 자료구조, 배열(Array)에 대해 알아보기         Array의 구조와 특징  배열은 컴퓨터에서 리스트를 저장하는 데이터 타입 중 하나입니다.  연속된 메모리 공간에 순차적으로 데이터가 저장되며 같은 타입의 데이터를 여러개 나열한 선형 자료구조이다.대부분의 프로그램 언어에서 동일한 타입의 데이터를 저장한다.index가 존재하여 indexing 및 slicing이 가능하다.     Array의 선언 자바에서 배열을 선언하는 경우, 해당 배열의 자료형과 크기를 지정해야 합니다. //1차원 배열int[] arr1 = new int[5];//2차원 배열 int[][] arr2 = new int[3][5];      Array의 활용 배열을 반복문과 결합하면 많은 데이터도 효율적으로 처리할 수 있습니다. .. 2024. 4. 26.
728x90