AtCoder上にある問題のうち、AtCoder Problemsでdiff 800以上と判定されているものを順番に解いていく企画。
基本的な考え方は全てコード中のコメントに入れてあるので、参照のこと。
出典:
DigitalArts プログラミングコンテスト 2012 A – C-Filter
タグに正規表現と入れたが、特に使わずに解いている。
使えば多少楽に解けるかもしれない?という程度。
地道に考えれば、そこまで難しいところもなく、基礎的かつ真面目なループと条件分岐の実装力が問われる問題だと思われる。
とか偉そうに書いているけど、ふふーんと適当に通そうと書いた結果、結構間違えてたりします、ハイ。基礎的かつ真面目なことができてない……コンテスト中じゃなくてよかった……。
from collections import defaultdict
def main():
S = input()
N = int(input())
ng_words = [input() for _ in range(N)]
ngw_by_len = defaultdict(list)
for ngw in ng_words:
ngw_by_len[len(ngw)].append(ngw)
result = []
for wd in S.split():
for ngw in ngw_by_len[len(wd)]:
for i in range(len(ngw)):
if ngw[i] == '*':
continue
if wd[i] != ngw[i]:
break
else:
result.append('*' * len(wd))
break
else:
result.append(wd)
print(' '.join(result))
main()
関連