동적 계획법을 활용한 상태 머신 기반 문제 해결 전략
동적 계획법(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에 게시됨