0.はじめに
最近調子を落としているので挽回したいところでしたが
結果はC問題で大ブレーキがかかり、まぁなんとかACできましたが
結果3問解けただけで、レートも-18の880となりました・・・。
入茶が見えてきてしまった・・・。
1.A - Leftrightarrow
1問目からなかなか歯ごたえのある問題。
まぁ単純に実装しました。
【考え方】
・状態遷移を記録する変数chk(初期値0)を用意する。
・先頭から文字列を見ていき、文字が<かつ、chkが0の時chkを1にする
<かつ、chkが0以外の時chkを9にする
・文字が=かつ、chkが1か2の時chkを2にする
=かつ、chkが1と2以外の時chkを9にする
・文字が>かつ、chkが2の時chkを3にする
>かつ、chkが3以外の時chkを9にする
・文字列を見終わった後、chkが3ならYesそれ以外ならNoを出力
https://atcoder.jp/contests/abc345/submissions/51282024
2.B - Integer Division Returns
打って変わってB問題にしては簡単・・・。かと思いつつ
ちょっと工夫の必要な問題。
まぁ、例題が罠ケースを網羅してたので罠にかからずに済みました。
言語によっては実装方法変わるんだろうな・・・。
Xが10で割り切れる場合は、Xを10で割った(//)値
割り切れない場合はその値に1を加算した値を出力
実装はXが正か負かで分けてましたが、今見直すとどちらのケースも同じ式に
なってました・・・。
https://atcoder.jp/contests/abc345/submissions/51289448
3.C - One Time Swap
普通に考えたら、TLEになる問題。
まぁ、交換すると考えると、自分と違う文字がどれだけあるかを
保持して、それぞれと組み替えた分を合計して出力でAC!
と思いきや、結構のエラーとなる。
となって嵌りましたが、例題2のようなケースの時、横着して
上のやり方で0になったら1を出力。というような適当な
実装をしていたせいで、同一文字が2個ある場合はそれを入れ替えて
元の文字列と同じになるパターンとして、1を加算しなければ
いけなかったという点が漏れてました。
実装時の問題を突き詰めずにいたために失敗してしまうという
防げたミスが悔やまれます。
https://atcoder.jp/contests/abc345/submissions/51332263
以上