Tags

5 pages

Bitset

[Algorithm] C++ 백준 14737번 Dev, Please Add This!

격자에서 공을 상하좌우로 굴려 벽이나 가장자리에 닿을 때까지 이동하는 퍼즐에서, 모든 별을 하나의 플레이 순서로 획득할 수 있는지 판정한다. 단순 커버리지가 아니라 이동 순서 제약이 존재하므로 셀 단위 이동을 단방향 그래프로 모델링하고, 강한 연결 요소(SCC)로 압축한 DAG에서 상호 비가역(서로 도달 불가)한 컴포넌트 쌍의 동시 방문을 금지하는 제약과 각 별이 있는 칸의 행/열 중 하나의 정지 컴포넌트를 반드시 방문해야 한다는 제약을 2-SAT으로 구성해 모순 여부로 YES/NO를 결정한다. Kosaraju로 SCC를 구하고 DAG 도달성은 비트셋 DP로 처리하여 50×50까지 빠르게 동작한다.
[Algorithm] C++ 백준 14737번 Dev, Please Add This!

[Algorithm] C++/Python 백준 12928번 : 트리와 경로의 길이

백준 12928번 트리와 경로의 길이 문제는 N개의 노드와 정확히 S개의 길이가 2인 단순 경로를 갖는 트리의 존재 여부를 판별하는 수학+DP 문제입니다. 각 노드의 차수 분배와 경로 수식 변형을 통해 조건을 수식화하고, N과 S가 작으므로 다이나믹 프로그래밍을 활용해 차수 배치가 충족되는지를 탐색합니다. 수학적 귀납 및 조합 원리를 바탕으로 효율적인 검사를 수행하는 것이 핵심입니다.
[Algorithm] C++/Python 백준 12928번 : 트리와 경로의 길이