竸プロ精進記 ABC019 B 高橋くんと文字列圧縮 python 3 ランレングス圧縮

問題:https://atcoder.jp/contests/abc019/tasks/abc019_2

与えられた文字列を指定のアルゴリズムにしたがって圧縮するという問題。アルゴリズムが示されているのでその通りに実装すれば解けます。ちなみにこの圧縮方式は「ランレングス圧縮(連長圧縮)」Wikipediaというアルゴリズムで、モノクロファックスのデータ圧縮などに使われているそうです。

コード例

N=input()
ans=N[0]
cnt=1
for i in range(1,len(N)):
    if N[i]==N[i-1]:
        cnt+=1
    else:
        ans+=str(cnt)+N[i]
        cnt=1
ans+=str(cnt)
print(ans)

答えの文字列に予め先頭の文字を入れておきます。
for文で一つ前の文字と、今見ている文字が等しければcntに+1。もし異なる場合はcntを加えて、新しい文字を末尾に追加していきます。最後にfor文を抜けた後に、最後のcntを加えて完了します。

スポンサーリンク
スポンサーリンク