読者です 読者をやめる 読者になる 読者になる

水面下の夢

競プロやイラストに興味があります.メインブログがここ.ソシャゲの話はこっち(http://ameblo.jp/0n0-yumechi/).ブログアイコンはYaQ(@8_9_00)さんから.

No.342 一番ワロタww

Python yukicoder 競技プログラミング

落ちるテストケースの予測がうまく行かず,WAを連発した

問題
No.342 一番ワロタww - yukicoder


回答
#75835 No.342 一番ワロタww - yukicoder


以下のアルゴリズムで回答した.(見直したら一部簡略化出来た)

  1. 文字列の先頭から続くwを切りとる
  2. (追記):ここで,wが文字列中から消えた場合,空文字出力して即座に終了
  3. 正規表現で,"w+"を"w"に変換する.
  4. splitメソッドを使って,wでわけられるもののリスト1を作る
  5. 前の問題同様に,"w+"にマッチするリスト2を作る
  6. リスト2の要素中の最大長と一致するもののインデックスを取得したリスト3を作る
  7. リスト3に入っている要素を使って,リスト1のものを出力する

という感じでしょうか,複雑になってしまいました.

あと,余談ですが「wwwwwwだめです」というケースで落ちるような気がするんですが,どうなんでしょう?
(このケースの回答は空文字になるのが正解か?)

(追記:やっぱりダメだったので,修正しました)

import re

def solve():
    s = re.sub(r"^w+", "", input())
    if s.count("w") == 0:
        print("")
        exit(0)
 
    removeW = re.sub(r"w+", "w", s)
    splitList = removeW.split("w")
    matchwords = re.findall(r"w+", s)
    maxW = max([len(c) for c in matchwords])
    idxlist = [i for i in range(len(matchwords)) if len(matchwords[i]) == maxW]
    print("\n".join([splitList[i] for i in idxlist]))

if __name__=="__main__":
    solve()