CHUCK CHUCK 박사

잼잼 개발자

[Algorithm] Math - Euclidean

수학 유클리드 호제법

Euclidean Algorithm? 유클리드 알고리즘(Euclidean Algorithm)은 두 정수의 최대공약수(GCD)를 찾는 효율적인 방법입니다. 두 수의 최대공약수는 두 수를 나머지 없이 나눌 수 있는 가장 큰 숫자입니다. 유클리드 알고리즘의 기본 아이디어는, 두 수 a와 b(단, a > b)의 최대공약수는 b와 a...

[Algorithm] Math - Primality Test

수학 소수 판별

Fibonacci Number? 피보나치 수열(Fibonacci sequence)은 첫 두 숫자 이후의 각 숫자가 바로 앞 두 숫자의 합인 수열입니다. 수열은 0과 1로 시작하며, 다음과 같이 나열됩니다: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, … 수학적으로 정의하면: F(0) = 0, ...

[Algorithm] Math - Fibonacci Number

수학 파보나치 수

Fibonacci Number? 피보나치 수열(Fibonacci sequence)은 첫 두 숫자 이후의 각 숫자가 바로 앞 두 숫자의 합인 수열입니다. 수열은 0과 1로 시작하며, 다음과 같이 나열됩니다: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, … 수학적으로 정의하면: F(0) = 0, ...

[Algorithm] Math - Factorial

수학 비트조작

Factorial? 팩토리얼(Factorial)은 음이 아닌 정수 n의 팩토리얼을 n!으로 표기하며, 이는 n보다 작거나 같은 모든 양의 정수의 곱입니다. 수학적으로는 다음과 같이 정의됩니다: n! = n × (n - 1) × (n - 2) × … × 1 특수한 경우: 0! = 1으로 정의됩니다. 예시: 3! ...

[Algorithm] Math - Data Structure

수학 비트조작

Bit Manipulation? 비트 조작(Bit Manipulation)은 이진 데이터의 비트를 직접 다루는 기술입니다. 이를 통해 특정 숫자의 비트를 설정하거나, 지우거나, 토글하거나 확인하는 작업을 수행할 수 있습니다. 보통 비트 연산자를 사용하여 작업을 합니다. 주요 비트 연산자: AND (&): 비트를 지우...

[Algorithm] Data Structure - Bloom Filter

자료구조 그래프

Bloom Filter? 블룸 필터는 집합에 원소가 포함되어 있는지를 테스트하기 위해 사용되는 확률적 자료 구조입니다. 공간 효율성이 매우 뛰어나지만, 몇 가지 단점도 존재합니다: 거짓 긍정(false positives)이 발생할 수 있는데, 이는 원소가 집합에 속하지 않지만 속한다고 잘못 판단할 수 있음을 의미합니다. 하지만 거짓...

[Algorithm] Data Structure - Disjoint Set

자료구조 분리 집합

Disjoint Set? 분리 집합(Disjoint Set, 유니언 파인드라고도 불림)은 중복되지 않는 여러 개의 집합을 관리하는 자료구조입니다. 이 자료구조는 두 가지 주요 연산을 제공합니다: Find: 특정 요소가 속한 집합(또는 대표자)을 찾습니다. Union: 두 개의 집합을 하나로 합칩니다. 이 자료구조는 동...

[Algorithm] Data Structure - Graph

자료구조 그래프

Graph? 그래프는 정점(또는 노드)과 간선으로 이루어진 비선형 자료구조입니다. 각 간선은 두 개의 정점을 연결하며, 방향이 있을 수도(유방향 그래프) 없을 수도(무방향 그래프) 있습니다. 그래프는 소셜 네트워크, 도로 지도, 컴퓨터 네트워크 같은 네트워크를 표현할 때 자주 사용됩니다. 그래프의 구성 요소 정점(노드): ...

[Algorithm] Data Structure - Fenwick Tree

자료구조 펜윅트리

Fenwick Tree? Fenwick Tree(또는 Binary Indexed Tree)는 배열의 값을 효율적으로 업데이트하고, 구간 합(prefix sum)을 빠르게 구할 수 있는 자료구조입니다. 이 자료구조는 다음과 같은 작업을 자주 해야 할 때 유용합니다: 포인트 업데이트: 배열의 특정 원소 값을 업데이트하는 작업. ...

[Algorithm] Data Structure - Segment Tree

자료구조 Segment 트리

Segment Tree? 세그먼트 트리(Segment Tree)는 구간 쿼리를 효율적으로 처리하는 자료 구조입니다. 특히 배열 내 요소들에 대한 업데이트가 빈번하게 발생하는 경우 유용합니다. 세그먼트 트리는 업데이트와 쿼리 모두 로그 시간에 처리할 수 있어, 알고리즘 문제에서 많이 사용됩니다. 세그먼트 트리의 주요 연산: ...