문제
https://programmers.co.kr/learn/courses/30/lessons/60057
처음 작성한 코드
def solution(s):
mini = len(s)
s = [''.join(list(i)) for i in s]
for i in range(1,len(s)+1):
ans = ''
cnt = 1
for idx in range(0,len(s),i):
now = ''.join(s[idx:idx+i])
if s[idx:idx+i]==s[idx+i:idx+i+i]:
cnt += 1
continue
else:
if cnt > 1:
ans += str(cnt)
cnt = 1
ans += now
mini = min(mini,len(ans))
return mini
- 문자열을 1개 단위로 자르는 거 부터해서 len(s)개 단위까지 자르는 포문을 돌면서 진행했다.
- 현재 문자열과 다음 문자열이 같으면 cnt를 증가시키고
- 다를 시, cnt+반복된문자열 이렇게 새로운 문자열에 저장시켜놓고 그 길이를 지금까지 구해둔 mini와 비교후 더 작은 값을 mini에 넣었다.
깨달은 점
- 문제를 풀 때, 처음부터 모든 경우를 풀 수 있는 로직을 짜지말고 최소한 단위를 작게하여 로직을 짜고 그걸 확장해나가는 방식으로 짜면 훨씬 수월하게 풀릴 때가 있는 것 같다.
- level 2 치고 쉬웠던 것 같다!
'Programmers' 카테고리의 다른 글
[프로그래머스] 오픈채팅방 (0) | 2021.01.19 |
---|---|
[프로그래머스] 괄호 변환 (0) | 2021.01.19 |
[프로그래머스] 프렌즈4블록 (0) | 2021.01.17 |
[프로그래머스] 캐시 (0) | 2021.01.15 |
[프로그래머스] 키패드 누르기 (0) | 2021.01.14 |