문제접근 체크리스트 거꾸로 생각 전처리(DB, DP) 두 알고리즘 조합 오프라인처리(정렬,Mo's등) 중간만남(MITM) Small to Large? 예제를 직접 풀어보고 유용한 조건 및 불변식 이끌어내자. 연산에 대한 불변식을 찾는것도 좋다.ARC119C나 BOJ21045나 게임이론의 거울전략이나 캔슬링전략 등. 문제를 더 간단하게 분해할 수 있는가?(점화식? 경우의수를 쿼리합으로 변형?) 부분문제에 순서가 존재하는가? 존재한다면 작은문제부터 순서대로 풀자. 없더라도 순서를 잘 강제하면 쉽게 풀리는 경우가 있다. 계산에 중복이 있는가? 있다면 어떻게 줄일 수 있는가(DP? 수학적 식변형?) Lemma 세워보고 러프한 증명 신나서 코딩하기 전에, 더 간단한 솔루션이나 구현이 있는지 생각해보기 너무 Top-Down방식으로만 생각하는것같다. Bottom Up방식으로도 접근해보자.(특히 트리자료구조 쿼리문제) 생각을 무조건 이진트리로 출발하면 오히려 어려워질 수 있다. 2336처럼 미리 세그트리처럼 노드를 채워놓고 접근해야 쉬워지는경우도 있음을 깨달음. 1~n까지 중복없이 나오는게 키포인트인듯. 1777순열복원도 이렇게 접근하면 rope없이 풀린다. 3개변수일때 가운데 잡고 나머지 결정 작은케이스에서부터 규칙찾기(작은케이스->일반화) 작은케이스에서 찾는 규칙은 증명도 쉽다(BOJ 산만한 고양이) OEIS 게임이론일 경우 작은케이스에서 완탐후 규칙찾기 가능한 경우가 종종 있다. 아무리 생각해도 안될 때는, Ad-hoc이나 Constructive쪽으로도 생각해보자.(반대로하기, 극단적으로 간단한 뭔가하기 등등 많다) 연속부분수열, Nearest Smaller Element 등: 스택일 가능성 높다. 이걸 놓치면 PST나 PBS같은 (가능은 하지만 구데기같은) 괴상한 풀이로 빠지는 경우가 자주 생기므로 주의!