1. paizaラーニングトップ
  2. レベルアップ問題集
  3. 一次元過去DPメニュー(言語選択)
  4. 問題一覧 F#(Beta)編
  5. 回文への分割 F#(Beta)編

一次元過去DPメニューのサムネイル
回文への分割 F#(Beta)編(paizaランク A 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

文字列 S が与えられます。

S をそれぞれが回文である 1 つ以上の文字列に分割するとき、必要な最小の分割回数を出力してください。

ただし、回文である文字列とは以下のようなものを指します。

・i 文字目と {|string| - (i - 1) } 文字目が常に等しい 1 文字以上からなる文字列(1 ≦ i ≦ |string|, |string| は文字列 string の文字数)

また、文字列の分割は以下の操作を 1 回とし、分割後の文字列を分割前の順序で連結したものと、分割前の文字列が一致する必要があります。

・1 つの文字列をそれぞれが 1 文字以上である 2 つの文字列に分ける操作

入力される値

入力は以下のフォーマットで与えられます。



S



・1 行目には 文字列 S が与えられます。
・入力は合計で 1 行からなり、入力値最終行の末尾に改行が1つ入ります。


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

S をそれぞれが回文である 1 つ以上の文字列に分割するとき、必要な最小の分割回数を出力してください。
最後は改行し、余計な文字、空行を含んではいけません。

条件

すべてのテストケースにおいて、以下の条件をみたします。

・2 ≦ |S| ≦ 1000
・|S| は 文字列 S の文字数
・S は英子文字のみからなる

入力例1

aca

出力例1

1

入力例2

abcbada

出力例2

3

問題一覧へ戻る

ページの先頭へ戻る