https://school.programmers.co.kr/learn/courses/30/lessons/60057
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
코드
def solution(s):
answer = 1000
length = len(s)
if length == 1:
return 1
for num in range(1, len(s)):
total = length % num
time = length // num
idx = 0
cnt = 1
word = ""
while idx < num * time:
if idx == 0:
word = s[idx : idx + num]
idx += num
continue
if s[idx : idx + num] == word:
cnt += 1
else:
if cnt > 1:
total += (len(str(cnt)) + num)
else:
total += num
cnt = 1
word = s[idx : idx + num]
idx += num
if cnt > 1:
total += (len(str(cnt)) + num)
else:
total += num
answer = min(answer, total)
return answer
풀이
s의 길이는 1 이상 1,000 이하입니다.
- s의 길이가 1인 경우를 고려합니다.
반복되는 문자가 몇 개인지 붙여줘야한다.
- 100이면 100을 10이면 10을 붙여줘야한다.
- 문자열을 직접 만들고 계산해주는 편이 나을 것 같다.
마지막에 비교할 문자가 없는 경우
- 마지막의 문자가 반복되고 있는 문자가 이어지고 있는지 반복된 적이 없는 문자가 남은건지 비교해야한다.
'코드트리' 카테고리의 다른 글
[프로그래머스][Python] 주차 요금 계산 (0) | 2025.03.19 |
---|---|
[코드트리][Python] 외판원 순회 (0) | 2025.03.07 |
[코드트리][Python] 수들 중 최솟값 최대화하기 (0) | 2025.03.07 |
[코드트리][Python] 수들의 합 최대화하기 (0) | 2025.03.07 |