ラングレス圧縮について
- 符号を連続して出現する回数をカウントして、
その符号 * 回数
で表現する圧縮方式
具体例
import itertools
S = "ooxxoooxxxxxo"
res = []
for k, gi in itertools.groupby(S, key=lambda x:x[0]):
res.append(k)
res.append(len(list(gi)))
print(res)
結果
['o', 2, 'x', 2, 'o', 3, 'x', 5, 'o', 1]
例; ラングレス圧縮の結果を用いて結果を得る
問題
提出
import itertools
S = input()
l = []
for k, gi in itertools.groupby(S):
l.append( (k, len(list(gi))) )
ans = [0] * len(S)
pos = 0
for k, ln in l:
if k == "R":
for i in range(ln):
if i%2 == 0:
ans[pos+ln-1] += 1
else:
ans[pos+ln] += 1
if k == "L":
for i in range(ln):
if i%2 == 0:
ans[pos] += 1
else:
ans[pos-1] += 1
pos += ln
print(*ans, sep=" ")