[Python] 코딩 도장 - 문자열 압축하기
Updated:
코딩 도장 사이트의 문제를 직접 풀어본 내용을 정리하여 올립니다.
코딩 도장에서 여러 문제를 확인할 수 있습니다.
난이도 순으로 차근차근 풀어보려 합니다.
[문제: 문자열 압축하기] - Lv.2
문자열을 입력받아서, 같은 문자가 연속적으로 반복되는 경우에 그 반복 횟수를 표시하여 문자열을 압축하기.
입력 예시: aaabbcccccca
출력 예시: a3b2c6a1
출처: https://codingdojang.com/scode/465?answer_mode=hide
[풀이]
def compress(txt):
a = ""
c = 0
v = txt[0]
for i in range(len(txt)):
if txt[i] == v:
c += 1
else:
a += v + str(c)
v = txt[i]
c = 1
if i == len(txt)-1:
a += v + str(c)
return a
txt = "aaabbcccccca"
compress(txt)
이전 값과 동일하면 카운트를 늘리고 동일하지 않으면 여태까지 쌓인 카운트를 문자열에 더해주었다.
for문 작성시 초기 값이 필요해서 v=txt[0]
로 설정하였고 이 때 카운트는 0부터 체크해야한다.
마지막의 경우 다음 루프가 작동하지 않으므로 마지막일 경우는 따로 문자열에 더해주었다.
[추천 풀이]
s = 'aabcccaaaaas'
result = s[0] # 첫번째 값을 결과에 넣는다
count = 0 #
for st in s:
if st == result[-1]: #
count += 1
else:
result += str(count) + st
count = 1
result += str(count)
print(result)
a2b1c3a5s1
이 분도 비슷한 방식이지만 else
에서 달라진 문자열까지 더하는 방식을 사용하였다.
마지막의 경우 루프가 작동하지 않는 건에 대해선 for문 밖에서 추가해주는 방식을 사용했다.
Leave a comment