概要
三色の石が一列に置かれている。
この石を、隣り合うどのペアも色が異なるようにしたいとき、取り除かなければならない石の数を求めよ。
解法
答えとなる値は、「直前の石と同じ色の石の数」と言い換えられます。
そのような石を先頭から順に数えれば解けます。
コード
import Control.Applicative import Control.Monad import Data.List main = do getLine s <- getLine print $ solve s '.' solve :: String -> Char -> Int solve [] _ = 0 solve (c:cs) pre | c == pre = 1 + solve cs c | otherwise = solve cs c