torus711 のアレ

主に競技プログラミングの問題について書きます

Codeforces #163, A : Stones on the Table

概要

三色の石が一列に置かれている。
この石を、隣り合うどのペアも色が異なるようにしたいとき、取り除かなければならない石の数を求めよ。

解法

答えとなる値は、「直前の石と同じ色の石の数」と言い換えられます。
そのような石を先頭から順に数えれば解けます。

コード

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