알고리즘/알고리즘 이론, 템플릿 25

분할 정복을 이용한 거듭제곱

ll pow(ll a, ll p) { ll ret = 1; while (p > 0) { if (p & 1) ret = ret * a; a = a * a; p >>= 1; } return ret; } 재귀 #include using namespace std; long long A, B, C; long long divide(long long a, long long b, long long c) { if (b == 1) { return a % c; } long long tmp = divide(a, b/2, c) % c; if( b % 2 == 0 ) { return tmp * tmp % c; } else { return tmp * tmp % c * a % c; } } int main() { cin >> A >>..

c++ 문자열 slicing 및 파싱

https://school.programmers.co.kr/learn/courses/30/lessons/72412 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2021 카카오 코딩테스트 문제 이 문제 해결한 후 다른 사람의 풀이를 보고 깨달은 점 정리 ["java backend junior pizza 150","python frontend senior chicken 210","python frontend senior chicken 150","cpp backend senior pizza 260","java backend junior chicken 80",..

shift 연산과 오버플로우

shift연산에 대해서 여러 실험을 해본 것은 https://www.acmicpc.net/problem/23250 23250번: 하노이 탑 K 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 이 문제 때문이다. 하노이탑 문제는 대학교 수업에도 많이 나올만큼 재귀를 설명하는데 있어서 좋은 예시가 된다. 기본 하노이 코드는 다음과같은 모양을 따른다. void Hanoi(ull num, ull start, ull by, ull to, ull mok) { if (num == 1) { cout