名もなき未知

エンジニアリングとか、日常とかそういうのをまとめる場所。アクセス解析のためGAを利用、Googleに情報を送信しています。商品紹介のためAmazonアフィリエイトを利用、Amazonに情報を送信しています。記事に関しては私が書いていない引用文を除いて自由にご利用ください。

No.342 一番ワロタww

落ちるテストケースの予測がうまく行かず,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()