[알고리즘] 정수론 : 소수(Prime number) 구하기
·
CS/알고리즘
📌 소수(Prime Number)란?소수는 자신보다 작은 두 개의 자연수를 곱해 만들 수 없는, 1보다 큰 자연수를 말한다.즉, 1과 자기 자신 외에는 약수가 존재하지 않는 수예) 2, 3, 5, 7, 11, 13, ... 📌  소수 구하기의 핵심 이론✨💡에라토스테네스의 체 원리소수를 구할 때 가장 널리 사용되는 알고리즘! 빠르고 효율적으로 소수를 찾을 수 있다. 🌟 1️⃣ 구하고자 하는 소수의 범위만큼 1차원 배열 생성배열의 각 값을 "소수인지 아닌지"를 나타내는 플래그로 사용한다.예를 들어, true면 소수, false면 소수가 아니다.2️⃣ 2부터 시작해서, 현재 숫자가 소수일 때, 그 배수들을 모두 제거배수는 소수가 될 수 없으므로 지워준다.단, 처음 선택한 숫자는 지우지 않음!3️⃣ 다음..
[알고리즘] 그리디 알고리즘(Greedy Algorithm)
·
CS/알고리즘
📌  그리디 알고리즘이란?그리디 알고리즘(탐욕 알고리즘)은 문제를 해결하는 과정에서 현재 상황에서 가장 최선이라고 생각되는 선택을 반복적으로 하여 최적의 해를 구하려고 하는 알고리즘이다.  즉, "지금 가장 좋아 보이는 것을 선택하는 것이 최종적으로도 가장 좋은 선택!" 이라는 가정을 기반으로 동작한다. 하지만 항상 최적의 해를 보장하지는 않는다! 그리디 알고리즘이 성공하려면 특정한 조건들이 충족되어야 한다. 😅🔍 그리디 알고리즘의 주요 특징1️⃣ 지역 최적해(Local Optimal Solution)현재 단계에서 가장 최선의 선택을 반복적으로 선택이 선택이 전역 최적해(Global Optimal Solution)가 될 것이라고 가정2️⃣ 단순하고 빠른 해결 방법복잡한 계산 대신 현재 상태에서 최선..
[알고리즘] 이진 탐색(Binary Search)
·
CS/알고리즘
📌  이진 탐색이란?이진 탐색(Binary Search)은 정렬된 데이터에서 원하는 값을 효율적으로 탐색하는 알고리즘! 🎯기능특징시간 복잡도타깃 데이터 탐색중앙값 비교를 통한 대상 축소 방식O(logN)  🔍 이진 탐색의 주요 특징빠른 탐색이진 탐색은 정렬된 데이터에서 탐색을 수행하므로 **O(log N)**의 시간 복잡도를 가진다.데이터 크기가 커질수록 선형 탐색보다 훨씬 효율적이다.정렬 필수이진 탐색을 사용하기 위해선 데이터가 반드시 정렬되어 있어야 한다.정렬이 되어 있지 않다면, 먼저 정렬한 후 탐색해야 한다.  🔧 이진 탐색의 활용과 문제 유형활용 사례🔢 숫자 데이터 탐색📚 사전처럼 정렬된 텍스트 탐색🛒 가격 또는 범위를 기준으로 정렬된 상품 탐색문제 유형✅ 특정 값의 존재 여부 확인..
[알고리즘] 너비 우선 탐색 : BFS(Breadth-First-Search)
·
CS/알고리즘
📌  너비 우선 탐색이란?그래프 탐색 기법그래프 완전 탐색 기법 중 하나그래프의 시작 노드에서 출발하여 시작 노드를 기준으로 가까운 노드를 먼저 방문하면서 탐색하는 알고리즘Queue(큐) 자료구조를 사용해 탐색하며, 탐색 순서는 선입선출(FIFO) 방식을 따른다.BFS는 최단 경로를 보장하기 때문에, 최단 거리 계산이 필요한 문제에서 매우 유용하다.구현 방식큐(Queue)를 이용한 구현시작 노드를 큐에 넣고 방문 표시큐에서 노드를 꺼낸 뒤, 해당 노드에 연결된 인접 노드들을 큐에 추가하고 방문 여부를 기록큐가 빌 때까지 이 과정을 반복방문 여부 확인방문한 노드를 다시 탐색하지 않도록 방문 여부를 기록하는 것이 중요이를 통해 중복 탐색을 방지하고, 무한 루프를 방지할 수 있음탐색 순서BFS는 가까운 노드..