0.はじめに
C問題が一目見ただけで時間かかりそうだったので、Dを見ると
行けそうだったので先に回答。その後Cに取り掛かるも40分では
解ききれませんでした。
それでもABDクリアでレートが14upしました。
1.A - Weekly Records
最初、平均を求める問題かと思いましたが単純に
合計を求める問題だったんで
回答用のリストを作って、7個分足したらリストに
追加していって最後に出力でACでした。
https://atcoder.jp/contests/abc307/submissions/42895027
2.B - racecar
まず文字列の逆を求める方法をググる。
Sを逆からにするには、S[::-1]でよいと分かったので
S==S[::-1]が成り立てば、回文であると判断できます。
あとは、リストをすべて順につなげていって
回文が成り立てば、Yesを出力して終了
すべてチェックして成り立たなければNoを出力して終了
注意点は、すべての組み合わせをチェックするときに
リスト内でおなじ(位置の)文字列の組み合わせ時はチェック対象から外す
点くらいでした。
https://atcoder.jp/contests/abc307/submissions/42902461
3.C - Ideal Sheet
考え方としては、
1)Cシートを表す2重リストを作成し、Xの黒マスに1を、それ以外に0をセット
2-1)Aシートの左上の黒マスとXシートの左上の黒マス合わせて、
Aシートのほかの黒マスがXシートの黒マスと一致するかチェック
一致したら、Cシートリストの一致した座標を2に書き換え
一致しなかったら3)へ
2-2)Bシートの左上をCシートリストの1or2マスに重ねて
他の黒マスをCシートリストの1or2と一致するかを順にチェック
一致したら、リストのマスを2に変更
一致しない時(0の時)3)へ
2-2-1)Cシートリストに1が残ってたら
Bシートの左上を次のCシートリストの1or2マスに重ねてチェック
残ってなかったらYesを出力して終了
3)2のチェックで終了しなかったら、BとAを逆にしてチェック
4)3)のチェックでも終了しなかったらNoを出力して終了
と、イメージはできてましたが、ちょっと実装しきれませんでした。
4.D - Mismatched Parentheses
なんとなく、似た問題を見た気がしつつ取り組む。
考え方
1)デキューに、左カッコ毎の文字列を格納していく
2)右かっこが出てきたらデキューをpopしてかっこの組み合わせを削除
3)最後にデキューに残った文字列を先頭からつなげて出力
ポイント
・1個目の文字列は(以外が先頭の事もあり
・右かっこの数を覚えて置き、対応する右かっこがないのに
dequeをpopすることが無いようにする。
dequeさえ使えれば、簡単になる問題だなと思いました。
https://atcoder.jp/contests/abc307/submissions/42917633
以上