AtCoder Beginner Contest 469

AtCoder Beginner Contest 469

ABの2完。Bはzip3とか使えそうと思ったけど、頭と末尾にxを追加するというのを思いつかなかった。

Train Car

main :: IO()
main = do
  [n, k] <- map read . words <$> getLine :: IO [Int]
  print $ n - (k-1)

Isolated Seats

main :: IO ()
main = do
  n <- readLn
  as <- getLine

  print $ solve n as

solve :: Int -> [Char] -> Int
solve 1 as = if head as == 'x' then 1 else 0
solve n as = do
  let x = length [i | i <- [0..n-3], as !! i == 'x', as !! (i+1) =='x', as !! (i+2) =='x']
  let right = if (take 2 as) == "xx" then 1 else 0
  let left = if as !! (n-1) == 'x' && as !! (n-2) == 'x' then 1 else 0

  x + right + left

こうやればいいだろうと思いついてから、それをコードにするのに時間がかかっているので、Haskellをもっと勉強しないといけないですね。 安定してABを解けるようにしていきたいです。