[プログラマー60057]2020公募1番文字列圧縮
質問する
[プログラマ60057]文字列圧縮
コード#コード#
def solution(s):
answer = s[:]
# le: 압축할 길이
for le in range(1,len(s)//2+1):
result = ''
cnt = 1
# 현재 문자열과 다음 문자열을 비교해서
for st in range(0,len(s),le):
# 같으면 cnt만 증가
if s[st:st+le]==s[st+le:st+2*le]:
cnt += 1
# 다르면 현재까지 압축한 결과 붙이기
else:
if cnt>1:
result += (str(cnt)+s[st:st+le])
else:
result += s[st:st+le]
cnt = 1
if len(result)<len(answer):
answer = result[:]
return len(answer)
に答える
最後の文字列
s[st+le:st+2*le]
は''
であるため、無条件にelse
に移動するresult += (str(cnt)+s[st:st+le])
が実行され、異なる場合でもresult += s[st:st+le]
が実行されるので、最後の文字列を貼り付けることができます.まちがい
最初、答えは意外にもa*1001に初期化され、テスト5は合格しなかった.
ヒントを見るとすぐにどこが間違っているのかわかりますが、実戦なら迷うかもしれません.
Reference
この問題について([プログラマー60057]2020公募1番文字列圧縮), 我々は、より多くの情報をここで見つけました https://velog.io/@savannah030/programmers-60057-2020-공채-1번-문자열압축テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol