''' 2
문제 : 문자열 압축
주어진 문자열에서 반복되는 문자들을 압축하여 새로운 문자열을 반환하는 함수를 작성하시오. 예를 들어, 입력이 "aaabbcccc"인 경우 "a3b2c4"로 변환하시오.
조건: 압축된 문자열의 길이가 원래 문자열보다 길어질 경우 원래 문자열을 반환하시오.
'''
txt = input()
cnt = {}
fin = str()
## 문자열 하나씩 쪼개서 딕셔너리에 카운트 값 저장
for i in txt:
if i in cnt:
cnt[i] = cnt[i] +1
else:
cnt[i] = 1
## 딕셔너리 값 합쳐서 출력
key = ''.join((list(cnt.keys())))
val = ''.join(map(str, list(cnt.values())))
for i in range (0, len(key)):
full_txt = key[i] + val[i]
fin = fin + full_txt
## 딕셔너리 값 합쳐서 출력한 게 더 길면 원래 문자열 출력
if len(txt) <= len(fin):
print(txt)
else:
print(fin)
''' 문제점
- 연속된 문자 고려 부족: 입력 문자열에서 연속적으로 나타나는 문자들을 개별적으로 처리하지 않고, 각 문자의 전체 빈도 수만을 고려하고 있습니다.
- 딕셔너리 사용: 딕셔너리를 사용하여 각 문자의 빈도수를 저장하는 것은 좋지만, 연속적인 문자의 빈도수를 계산하는 데는 적합하지 않습니다.
- 출력 논리: 압축된 문자열의 길이가 원래 문자열보다 길 경우 원래 문자열을 반환하는 조건이 구현되어 있지만, 앞서 언급한 문제점으로 인해 정확한 압축 결과를 생성하지 못합니다.
'''
Python