유클리드 알고리즘
·
내배캠/C++
유클리드 알고리즘두 정수의 최대공약수(GCD, Greatest Common Divisor)를 구하는 효율적인 방법이다. 기본 원리는 두 수의 최대공약수는, 두 수의 모듈러 값과 작은 숫자의 최대 공약수와 같다는 성질을 반복적으로 이용해 계산한다.int GCD(){ int a = 48; int b = 30; while (b != 0) { int temp = b; b = a % b; a = temp; } return a;}
Class
·
내배캠/C++
Class추상화, 캡슐화, 상속, 다형성 즉 객체 지향의 4가지 주요 원칙을 구현하는 기본 단위이다.동일한 구조와 기능을 가진 여러 객체를 효율적으로 생성하고 관리할 수 있게 한다.#include using namespace std;class Student{public: // 동작 함수 정의 double GetAverage(); int GetMaxScore(); void SetKorScore(int Kor) { this->Kor = Kor; } void SetMathScore(int Math) { this->Math = Math; } void SetEngScore(int Eng) { this->Eng = Eng; } int GetKorScore() { return Kor; } int GetMathS..
set 과 unordered_set
·
내배캠/C++
set 과 unordered_set set과  unordered_set은 C++ 표준 라이브러리의 컨테이너이다.둘 다 중복되지 않는 고유의 값을 저장하는데 사용되지만 내부 동작 방식에 차이가 있다. set은 Red-Black Tree / 이진 검색 트리 구조를 가지고 있어,데이터를 항상 정렬된 상태로 유지해 정렬된 데이터에 대한 검색이나 순차적인 접근이 필요할 때 적합하다.따라서 데이터 삽입 시 자동으로 정렬되어 별도의 정렬 작업이 필요 없는 것이 장점이다.그리고 메모리 사용량이 비교적으로 적다.하지만 삽입/삭제 연산이 느린 단점을 가지고 있다. / O(log n) unordered_set은 삽입, 삭제, 탐색의 시간 복잡도가 평균적으로 O(1)로 매우 빠른 대신 데이터가 정렬되지 않는다.그리고 데이터가..
Key-Value 자료구조
·
내배캠/C++
DAT(Direct Adress Table)는 데이터 값을 직접적으로 키 값(Index)으로 사용해 데이터 정보를 저장하는 구조인데,이와 같은 방식은 데이터가 음수이거나 엄청 큰 수일 경우 활용할 수 없다는 단점이 있다. 이를 보완한 것이 Key-Value 자료구조이다. 내부 원리는 Hash 와 BST로 나뉘게 되는데 Hash를 먼저 직접 구현해볼 것이다.Hash-Table은 요소 값을 Key(Index)로 바로 사용하는 것이 아닌, HashFunction을 거쳐 만들어진 HashCode를 바탕으로 새로운 Key를 만들어 Bucket에 요소를 배치한다. 이때 요소들은 특정한 순서로 정렬되지 않는다. 동일한 HashCode를 가진 요소는 동일한 Bucket에 저장되며, 이로인해 요소를 검색, 삽입, 제거 ..
Binary_Search
·
내배캠/C++
bool binary_search(ForwardIterator first, ForwardIterator last, const T& value);Binary_Search는 이진 탐색 알고리즘을 사용한다.데이터가 정렬되어 있어야 사용 가능하다.탐색 범위를 반씩 나누어 찾고자 하는 값이 포함된 범위를 좁혀나간다. 헤더에 정의되어있다.내부적인 구조를 간략하게 살펴보면bool solution(int TargetNum) { int Start = 1; int End = 10; int Mid; while (Start TargetNum) End = Mid - 1; }}int main() { bool Answer = solution(7); return 0;} 이렇게 모든 범위를 선형적으로..
SQL
·
내배캠/C++
내배켐에서 SQL에 관한 문제를 데일리로 풀게 되었는데, 한 번도 공부해보지 못했던 부분이라 정리하려한다.  우선 SQL은 데이터베이스와 대화하기 위해 특별히 디자인된 언어이다.그래서 SQL 데이터베이스는 많은 회사, 금융 기관, 정부 기관 등등 많은 기관들이 사용하고 있다. 커멘드가 직설적인 표현이라 짧은 시간내에 이해할 수 있는 것 같아서 좋았다.  SELECT는 내가 찾고자 하는 데이터를 의미하고, FROM은 내가 찾을 데이터 테이블을 명시해준다.WHERE은 특정 조건을 설정하는 것이다. 위의 문제에서는 이름이 있는 데이터의 ID를 찾는 것이기 때문에 is not null을 명시해주었다.마지막으로 ORDER BY는 쿼리 결과를 정렬할 때 사용한다. 기본적으로 오름차순(ASC)로 정렬이되고, 만약 내..