じょん・どうのブログ

趣味と勉強したことを吐き出すブログです。主に競プロ、Unity、トレカをやってます!

AtCoder Biginners Contest 143 C - Slimesを解きました。

 どうも、今日も今日とて競プロです。今回はAtCoder Biginners Contest 143を解いてきたので、いつも通りC問題について書きます。

 

URLです。

 

https://atcoder.jp/contests/abc143/tasks/abc143_c

 

注:以下、ネタバレが含まれます!

 

さて、今回のC問題の問題文は以下の通りです。

 

問題文

N 匹のスライムが横一列に並んでいます。これらの色に関する情報が、長さ N の英小文字から成る文字列 S で与えられます。左から i 番目のスライムは、 S の i 文字目に対応する色を持っています。

同じ色を持ち隣接するスライムは融合し、色は変わらずに 1 匹のスライムとなります。このとき、融合した後のスライムは、融合する前の各スライムが隣接していた他のスライムと隣接した状態になります。

最終的に存在するスライムは何匹となるでしょうか。

 

 なんかややこしく書いてありますが、この文章の意味が分かれば、後は楽勝です。マジで楽勝です!要は、与えられた文字列のアルファベットの種類数を出力すれば良いということなんです!

 

ね?簡単でしょ?

 

僕もびっくりしましたよ。こんなんで本当に正解なのかって。AtCoder Biginners SelectionのC問題の方が圧倒的にムズイやんって。でもこれでAC出せたんで合ってるんでしょう(間違ってたらごめんなちゃい)。

 では、これを実装するにはどうするか?種類数を直接1から数えればええのんか?今考えてみれば、「それでも大丈夫だったかもなあ」と思うのですが、提出したコードは少し違う考え方をしていました(とはいえ、特別な事はしていません)。そういう捻くれた考え方もあるんだな~程度に見ていってください。

 どう考えたか。簡単です。文字列の字数からかぶった文字数を引けば良い。個人的にはこっちの方が実装しやすい気がします。

f:id:John_Doekun:20200313124026p:plain

今回は短いですが、この辺で。さよなら~