れとろのメモ置場

とあるSEのメモ置場

AtCoder Beginner Contest 349

AtCoder Beginner Contest 349に参加しました。

結果

A,B,Cの3問正解でした。 D問題が解けそうな気がして頑張ってみたけど解ききれなかった。

A - Zero Sum Game

1対1で勝負して勝つとポイントが+1、負けるとポイントが-1するゲームでN-1人のポイントが教えられるのでN人目のポイントを答える問題。

何試合してもN人全体のポイントの合計は0のままなので、そこに気づけていたら簡単に解ける問題。 N-1人のポイントを合計して、正負を反転させた値を出力すれば解ける。

B - Commencement

文字列が与えられるのでどの文字が何回出てくるか数えて、i回出てくる文字が0種類か2種類だけになっているかを判定する問題。

i回出てくる文字がそれぞれ何種類あるか知りたいので、 まずはどの文字が何回出てくるかを数える。 次にi回出てきた文字が何種類あるかを数えていき回答を出力する。

連想配列を2つ使えば簡単に解ける問題。 1つ目の配列で文字をキーに出現回数をカウントし、 2つ目の配列で出現回数をキーにその回数出てきた文字の種類数をカウントする。

最後に2つ目の配列の各キーに紐づく値が0か2だけになっているかどうかを確認して回答を出力する。

C - Airport Code

長さ3以上の文字列S(英小文字)と長さ3の文字列T(英大文字)が与えられるので、 大文字小文字を無視して、TがSの空港コードとなっているかどうかを判定する問題。

前処理として文字列SとTの大文字小文字をどちらかに統一してから処理する。

あとはSを先頭から見つつ、Tの文字列が順番に出てくるかを確認して回答を出力する。