Binary Exponentiation(exponentiation by squaring)은 a의 n제곱을 O(n) 대신 O(logn) 의 곱셈만 사용하여 계산할 수 있는 트릭이다. 이 트릭은 수리적인 일 이외의 다양한 분야에 적용할 수 있고, 때문에 결합법칙을 갖는 모든 연산에 사용될 수 있다. 알고리즘 a의 n제곱은 단순히 a에 a를 n-1번 만큼 곱해주는 것으로 표현할 수 있다. 하지만 이런 방식은 a나 n이 큰 경우 효율적이지 못하다. Binary Exponentiation의 핵심은, 제곱수 n의 이진표현이다. 다음은 n을 이진수로 변경을 한 예시이다. 적용 기존의 재귀 방식으로 제곱을 계산하는 코드. long long binpow(long long a, long long b) { if (b == ..
타입 추론(type inference)이란 표현식의 타입을 컴파일러가 스스로 알아내는 기능이다. 타입 추론과 관련된 키워드는 auto 와 decltype 이 있다. 그 중 auto 키워드에 대해 알아보겠다. auto 키워드는 다음과 같은 상황들에 사용한다. 1. 함수의 리턴 타입을 추론한다. 2. 구조적 바인딩에 사용한다. (C++ 17, 타입 지정하면 안됨) 3. 표현식의 타입을 추론한다. 4. 비타입(non-type) 템플릿 매개변수의 타입을 추론하는 데 사용한다. 5. decltype 에서 사용한다. 6. 함수에 대한 또 다른 문법으로 사용한다. 7. 제네릭 람다 표현식에서 사용한다. 변수를 선언할 때 타입 자리에 auto 키워드를 지정하면 그 변수의 타입은 컴파일 시간에 자동으로 결정된다. aut..
저는 현재 연구소에서 자율주행 시뮬레이터를 개발하고 있습니다. 주 사용언어는 C++이고 머신러닝에 관심이 많아 Python을 따로 공부를 여러차례 시도했습니다. 하지만 매번 강의를 들으면서 뭔가 배워간다는 느낌이 전혀 없고, '아 저사람이 저렇게 하네' 라는 관객이 된 느낌이었습니다. 참고로 제가 공부했던 교재/강의는 처음 시작하는 파이썬, Coursera, Udacity, Udemy 등이었습니다. 파이썬이 나랑 안맞는건가? 라는 생각을 하던 중에 홍정모 교수님이 파이썬 강의를 만드신다는 소식을 들었습니다. 인프런에서 따배씨, 따배씨뿔뿔을 열심히 들었던 기억도 나고 해서 파이썬 추월코스도 수강신청했어요. 결론은 대만족, 강력추천입니다!! 강의 시간이 짧아서 이 시간에 파이썬을 다 알 수 있을까 싶..
#include #include using namespace std; int main() { int N, K; cin >> N >> K; vector div; int flagNum = 1; while (N >= flagNum) { if (N % flagNum == 0) div.emplace_back(flagNum); ++flagNum; } if (K > div.size()) { cout