피사노 주기 개요 피보나치 수열은 0과 1로 시작하며, 다음 항은 앞의 두 항의 합으로 이루어지는 수열입니다. 주어진 양의 정수 m에 대해, 피보나치 수열의 모듈로 m 연산 결과가 주기적으로 반복되는 최소 주기를 말합니다. 피사노 주기 예제 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610에 대한 모듈러 3으로 나눈 나머지는 0, 1, 1, 2, 0, 2, 2, 1 / 0, 1, 1, 2, 0, 2, 2, 1 로 8개의 단위로 주기를 가집니다. 피사노 주기 식 모듈러가 10^k 일때 주기는 15 * 10^(k -1)입니다. 주기 안에서 모듈러로 나눈 나머지는 어떤 주기안에서도 같습니다. 피사노 주기 알고리즘 동작 원리 모듈로 m에 대한 피보나치 수..
피보나치 수열 개요 피보나치 수열은 0과 1로 시작하며 각 항이 바로 앞의 두 항의 합으로 이루어지는 수열입니다. 0, 1, 1, 2, 3, 5, 8, 13과 같은 형태를 가지고 있습니다. 피보나치 수열 재귀 동작원리 n이 1이하가 될 경우 n을 출력합니다. 그렇지 않을 경우에는 n - 1과 n - 2을 재귀적으로 호출하여 더해줍니다. 피보나치 수열 재귀 코드 예시 function fibonacci(n) { if n
팩토리얼 개요 주어진 양의 정수 n에 대해 1부터 n까지의 모든 양의 정수의 곱을 의미합니다. 정수 n에 대해 n!으로 표기됩니다. 팩토리얼 동작원리 n이 0이거나 1일 경우에는 팩토리얼 값이 1이므로, 1을 반환합니다. 그렇지 않을 경우에는 n에 대해 n-1의 팩토리얼을 구한 뒤, n과 곱하여 반환합니다. 팩토리얼 코드 예시 function factorial(n) { if(n === 0 || n === 1) return 1 return n * factorial(n-1) } 팩토리얼 코드 호출 순서 factorial(3)일 경우 3 * factorial(2) -> 2 * factorial(1) -> return 1 -> return 2 * 1 -> return 3* 2 = 6 팩토리얼 시간 복잡도 n의 ..
덱 개요양쪽 끝에서 삽입과 삭제가 모두 가능합니다.큐와 스택의 특징을 모두 가지고 있습니다.덱 동작 원리addFirst(el) : 덱의 앞쪽에 데이터를 추가합니다.addLast(el) : 덱의 뒤쪽에 데이터를 추가합니다.removeFirst() : 덱의 앞쪽 데이터를 제거 후 반환합니다.removeLast() : 덱의 뒤쪽 데이터를 제거 후 반환합니다.peekFirst() : 덱의 앞쪽 데이터를 반환합니다.peekLast() : 덱의 뒤쪽 데이터를 반환합니다.isEmpty() : 덱이 비어있는지 확인합니다.덱 배열 코드 예시class Deque { constructor() { this.deque = [] } isEmpty() { return this.deque.length === 0 } addFi..
큐 개요선입선출(FIFO) 구조를 가지고 있는 자료구조입니다.먼저 집어넣은 데이터가 가장 먼저 나오는 자료구조입니다.데이터를 임시로 저장했다가 나중에 꺼내서 사용할 때 유용합니다.큐의 FIFO 원리줄을 첫 번째 선 사람이 가장 먼저 서비스를 받습니다.큐에서 제거될 첫 번째 항목은 앞쪽이기 때문에 head라고 합니다. 가장 최근에 추가된 위치는 가장 뒤쪽이기 때문에 rear라고 합니다.큐 동작 원리enqueue(el) : 데이터를 큐의 뒤쪽에 추가합니다.dequeue() : 큐의 앞쪽에서 데이터를 제거 후 반환합니다.front() : 큐의 앞쪽에서 데이터를 제거하지 않고 반환합니다.isEmpty() : 큐가 비어있는지 확인합니다.size() : 큐의 크기를 반환합니다.큐 배열 코드 예시class Queue..
스택 개요가장 기본적인 선형 자료구조 중 하나로 스택의 상단에서 새로운 요소의 삽입과 삭제가 발생합니다.한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 후입선출(LIFO) 방식으로 데이터를 처리하는 구조입니다.스택은 맨 위에 있는 요소에만 접근할 수 있기 때문에 스택의 맨 위에 대한 포인터를 유지해야 합니다.데이터를 저장하고 검색하는 데 사용됩니다.스택 동작 원리push(item) : 새로운 항목을 스택의 top에 추가합니다.pop() : 스택의 맨 위에 있는 데이터를 제거하고 반환합니다.peek() : 스택의 맨 위에 있는 데이터를 반환하지만 제거하지 않습니다.isEmpty() : 스택이 비어있는지 확인합니다.size() : 스택의 크기를 반환합니다.스택의 push 작업요소를 스택에 푸시하기 전에 스택이 가..