동적 계획법을 활용한 상태 머신 기반 문제 해결 전략

동적 계획법(Dynamic Programming)에서 상태 머신(State Machine) 개념을 도입하면 복잡한 의사결정 과정을 간결한 상태 전이 방정식으로 변환할 수 있습니다. 각 단계에서의 선택지를 상태로 정의하고, 이전 상태로부터 현재 상태로 도달하는 최적 경로를 계산하는 세 가지 사례를 살펴봅니다. 1. 인접한 항목을 선택할 수 없는 경우 (도둑 문제) 연속된 상점을 ...

6월 10일 16:04에 게시됨

C++ 표준 템플릿 라이브러리(STL) 핵심 알고리즘 가이드

1. 비수정 시퀀스 알고리즘 컨테이너의 데이터를 변경하지 않고 탐색이나 비교 작업을 수행하는 알고리즘입니다. find, find_if, find_end find: 특정 값과 일치하는 첫 번째 요소를 찾습니다. find_if: 조건(서술자)을 만족하는 첫 번째 요소를 찾습니다. find_end: 대상 범위 내에서 특정 서브 시퀀스가 마지막으로 나타나는 위치를 반환합니다. vector&l ...

5월 26일 23:29에 게시됨

C++로 구현하는 상태 패턴: 객체의 동적 행동 전환

상태 패턴의 개념과 주요 응용 분야 상태 패턴은 행위 디자인 패턴 중 하나로, 객체 내부의 상태 변화에 따라 그 행동을 동적으로 변경할 수 있게 해줍니다. 이 패턴은 마치 객체가 클래스 자체를 바꾼 것처럼 보이게 하며, 조건문 기반의 복잡한 제어 흐름을 캡슐화하여 코드의 유지보수성과 확장성을 높입니다. 대표적인 적용 사례로는 주문 처리 시스템(예: 결제 대기, ...

5월 26일 13:06에 게시됨

그리디 알고리즘 문제 풀이:柠檬水找零,身高重建队列,气球射箭

柠檬水找零 문제 입력과 응답 시나리오가 고정된 문제의 경우, 단순하게 구현하면 된다. class Solution { public: bool lemonadeChange(vector<int>& bills) { unordered_map cash; for(int i = 0;i < bills.size();i++){ int change = bills[i] - 5; if(change == 0){ cash[bills[i]]++; ...

5월 26일 00:32에 게시됨