SRM505 dvi2

思いの外Easyで時間をくってしまった。。。
MiddleもChallengeされてしまい、残念である。
難易度としてはそんなに難しくなかったのではと思われるのにこの結果。。。

Easy

与えられた文字列をカンマ+スペースで区切られた文章だと思って、各文の先頭文字を大文字化する問題。
ただの文字列処理。
文が1つのみの場合とかを考えるのに手間取ったりもした。
以前よりはましだが、相変わらず文字列処理となると身構えてしまって、いくない。
Stringクラスの使えそうなメソッドをちょっとまとめる。

  • startsWith, endsWith, contains
    文字列を含んでいるかをチェックするときなどに有効。
  • replace, replaceAll, replaceFirst
    文字列の置換。replaceとreplaceAllの違いは引数を文字列としてあつかうか正規表現としてあつかうか。
  • split, substring
    文字列の切り出しに。sub's'tringなので注意(間違うのは自分だけ?)
  • toCharArray
    文字型配列に変換。new String(charArray)で文字列に再変換できる。
  • format, valueOf
    数字ー>文字列の変換に。formatを使えばformat("%05d", 10)などで0詰めができる。
    文字列ー>数字は例えばInteger.parseIntなどがある。
    parseIntは基数の指定もできる。10以外の基数での数字ー>文字列はtoBinaryString, toHexString, toOctalStringなど。
  • matches
    正規表現と一致するかをみる。
  • indexOf, lastIndexOf
    文字、文字列の出現位置
  • って感じすかね。

    Middle

    和と積が等しくなるように、数列の1つを変更する問題。
    問題自体は難しくないけど、境界のチェックがちゃんとしてないと通らない。
    剰余計算するときは0でないかチェックするとか。
    落ち着いて考えるべき。
    Challengeも成功したけど、自分が落ちてはしょうがない。

    Hard

    ちゃんと考えてないけど、たぶん'Y'が各行、列に2つ以上入るように'Y'をたしてやればいいんじゃないかと。
    と思ったんだけど、探索だと計算量がとかどう書けばいいのかなとか考えてるうちに時間切れ。
    これくらいのコードはちゃんと書けるようになりたい。

    今回の成績


    250: 164.50
    500: Falied System Test
    900: Opened
    Challenge Succeeded: 1
    Challenge Failed: 1

    total: 169.50

    評価:まだまだ頑張りましょう。