본문 바로가기

- Algorithms6

[Algorithm] Brute Force 브루트 포스 알고리즘이라고 하기도 뭐 합니다.암호학에서는 전수조사 (Exhaustive Key Search) 라고도 부르며, 무차별대입(공격) 이라도 부릅니다. Brute Force 브루트 포스수학적으로 계산 노가다하는 행위를 학술적으로 부르는 개념이라고 합니다.시간과 자원이 정말정말 풍부하다면, (비효율적이기도 하지만! 이라고 역접을 써서 설명할 수 있겠네용 ㅎㅎ)이론적으로 가능한 모든 수를 대입하므로 정확도 100%를 보장합니다. 1번 컴퓨터는 000~099 까지, 2번 컴퓨터는 100~199 까지... 이런식으로 병렬식으로 처리할 시 무서워질 수도 있습니다.(밑에는 암달의 법칙 (Law) 에 대한 설명으로, 병렬화에 대한 설명과 연관지어 떠올리실 수 있어용)https://ko.wikipedia.org/wiki.. 2025. 6. 16.
[Algorithm] Euclidean algorithm GCD 유클리드 호제법 최대공약수 Euclidean algorithm 은 유클리드 호제법이라고도 하며,이 알고리즘으로 Greatest Common Divisor; GCD 최대공약수를 구할 수 있습니다.(GCD 를 응용해 Least Common Multiple; LCM 최소공배수도 구할 수 있어용) 유클리드 호제법 (GCD 최대공약수)두 양의 정수 a, b (a > b) 에 대하여, a = bq + r (0 a, b 의 최대공약수는 b, r 의 최대공약수와 같다. 즉,gcd(a, b) = gcd(b, r)r = 0 이라면, a, b 의 최대공약수는 b 가 된다. 쉽게 말하자면, 큰 놈과 작은 놈의 최대공약수는,큰놈 % 작은놈 = R 이라고 할 때, (큰놈을 작은놈으로 나눈 후 나머지를 R 이라고 할 때,)R 과 작은놈의 최대공약수와 같.. 2025. 6. 15.
[Algorithm] 자료구조 배열 0x03 BaaarkingDog님의 강의에서 학습한 내용을 정리한 포스트입니다.알고리즘 학습이 필요하신 분들은 아래 링크에서 확인해주세요.영상 : https://youtu.be/mBeyFsHqzHg?si=Pdv3frAK_BZpWT6m깃헙 : https://github.com/encrypted-def/basic-algo-lecture/tree/master/0x03 프로그래밍 언어의 관점에서 배열은 익숙하오니, 자료구조로써의 배열에 대해 정리하겠습니다.배열이란- 메모리 상에 원소를 연속하게 배치한 자료구조입니다. 그렇기 때문에,k번째 원소를 O(1)에 확인/변경 가능OverHead (추가적으로 소모되는 메모리의 양) 가 거의 없음Cache Hit Rate 가 높음메모리 상에 연속한 구간을 잡아야 해서 할당에 제약이 .. 2025. 5. 14.
[Algorithm] Complexity 시간복잡도 공간복잡도 0x00 BaaarkingDog님의 강의에서 학습한 내용을 정리한 포스트입니다.알고리즘 학습이 필요하신 분들은 아래 링크에서 확인해주세요.영상 : https://youtu.be/9MMKsrvRiw4?si=RbPFMVVNx6OmMvlh블로그 : https://blog.encrypted.gg/922 ※ 헤더파일 환경 세팅은 아래내용을 참고해주세요.https://cru6548.tistory.com/1#include // 매번 헤더를 쓰거나 다른 사람들의 코드를 테스트해 볼 때 사용합니다. Time & Space Complexity문제는 늘 시간 제한과 메모리 제한을 두고 나옵니다.(e.g. 시간 제한 1초, 메모리 제한 256MB)연산은 AND, OR, ADD, 비교와 같은 비트 연산이냐, 나눗셈, 곱셉, 함수 호.. 2025. 5. 9.
[Algorithm] Caesar Cipher 시저 카이사르 암호 https://github.com/bulletprooves/CaesarCipher GitHub - bulletprooves/CaesarCipher: 시저? 카이사르. 왔노라, 보았노라, 이겼노라.시저? 카이사르. 왔노라, 보았노라, 이겼노라. Contribute to bulletprooves/CaesarCipher development by creating an account on GitHub.github.com소스코드는 위 링크에서 보실 수 있습니다.Caesar Cipher시점 암호는 (카이사르, "왔노라 봤노라 이겼노라" 아저씨 이름 맞아용) 일정 수 만큼 알파벳을 뒤로 미뤄,Z 다음은 다시 A로 돌아와 암호문에서 평문으로 찾아보는 치환 암호 알고리즘입니다.ABC 를 시계 방향(ClockWise)으로.. 2025. 5. 6.
[Algorithm] Sorting Algorithms 정렬 알고리즘 <선택, 삽입, 버블, 병합/합병, 퀵, 힙, 카운팅/계수, 기수> https://www.toptal.com/developers/sorting-algorithms Sorting Algorithms주어진 데이터들을 특정한 기준 혹은 순서(번호나 알파벳 순 같은 어휘)로 정렬하는 것은컴퓨터 뿐만 아니라 도서관의 도서 분류나 상품 진열과 같이 실생활에서도 아주 중요합니다. 특히, (정렬 가능한 형식일 때) 잘 정렬된 데이터들은 *이진탐색으로 빠르게 데이터에 접근할 수 있습니다.(* 이진탐색 : 정렬된 리스트에 중간을 골라, UP or DOWN? 물어보는 방식으로 반의 반의 반... 으로 탐색하는 것) 효율적인 탐색을 위해 다양한 정렬 알고리즘들이 존재하지만, 해당 포스트에서는[Selection, Insertion, Bubble, Merge, Heap, Quick, Count,.. 2025. 4. 27.