DOJ logoDOJ
問題
最近追加された問題保存した問題Workbooks
カテゴリDLCコンテストグループチーム掲示板
ランキング
正解数ランキングストリークランキングDOJ Powerランキング
提出状況
問題募集ログイン新規登録
DOJ logoDOJ

OI形式のサブタスク採点、Eloレーティング、Discord連携を備えたオンラインジャッジです。

問題
問題一覧カテゴリ
コミュニティ
コンテストランキング掲示板お知らせ外部のコンテストを開催するガイド
アカウント
ログイン新規登録ジャッジ状態
ポリシー
利用規約DLCの利用規則プライバシーAPI 文書言語ランタイムコンテストの順位報酬レーティングとパフォーマンス
© 2026 DOJ
All rights reserved
解説

Erasing Dadas Strings

問題に戻る

解説

아직 남은 칸이 있는 가장 왼쪽 열을 고르고, 그 열에서 가장 위에 남은 칸 (r,c)(r,c)(r,c)를 보자. 이 칸은 어떤 다다스 문자열의 첫 글자여야 하므로 반드시 d이다.

(r+1,c)(r+1,c)(r+1,c)가 아직 남아 있고 a라면 그 칸은 왼쪽이나 위쪽에서 시작한 다른 문자열에 포함될 수 없다. 따라서 현재 문자열은 아래쪽으로 진행해야 한다. 그렇지 않으면 오른쪽으로 진행해야 한다. 정한 방향으로 d, a가 번갈아 나오다가 s로 끝나는 가장 앞의 문자열을 지운다. 이 과정에서 규칙에 맞지 않는 칸이나 이미 지운 칸을 만나면 불가능하다.

열 우선 순서로 모든 칸을 처리한 뒤 전부 지워졌으면 기록한 연산들이 답이다. 각 칸은 한 번만 확인되므로 시간 복잡도는 O(NM)O(NM)O(NM)이다.