Notice
Recent Posts
Recent Comments
Link
나의 개발일지
[프로그래머스] Lv.2 문자열 압축 [Python, 파이썬] KAKAO 본문
- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/60057
- 🔑 문자열을 자르고 현재, 현재+1을 비교하기
- 현재, 현재+1 이 같은 동안에는 개수만 증가
- 다른 문자가 나오면 그동안 누적한 개수 + 문자를 변수에 연결시키기
- 개수가 1이라면 문자만 변수에 연결
- 처음에는 1도 같이 연결시키고 마지막에 replace로 1을 없애주었다.
- 이 경우 10, 11.. 같은 개수가 있을 때 1을 없애버려서 실패, 그래서 조건문에서 걸러주었다.
def solution(s):
answer = 987654321
for i in range(1, len(s) + 1):
slice = [] # n개 단위로 자른 문자열 리스트
compress = "" # 압축한 문자열 담을 변수
for j in range(0, len(s), i):
slice.append(s[j:j+i]) # 잘라서 리스트에 추가
cnt = 1 # 기본 개수 1개
for k in range(len(slice)-1):
if slice[k] == slice[k+1]: # 현재, 현재+1 이 같은 문자면
cnt += 1 # 개수 +1
else: # 다르면
if cnt == 1:
compress += slice[k] # 1은 생략하고 연결
else:
compress += str(cnt) + slice[k] # "누적한 개수" + "문자" 를 변수에 계속 연결
cnt = 1 # 개수 1로 초기화
if cnt == 1: # 마지막 남아있는 문자 처리
compress += slice[-1]
else:
compress += str(cnt) + slice[-1]
answer = min(answer, len(compress)) # 길이가 짧으면 정답 업데이트
return answer
'프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv.1 개인정보 수집 유효기간 [Python, 파이썬] KAKAO (0) | 2023.10.15 |
---|---|
[프로그래머스] Lv.3 합승 택시 요금 [Python, 파이썬] KAKAO (2) | 2023.10.14 |
[프로그래머스] Lv.2 거리두기 확인하기 [Python, 파이썬] KAKAO (0) | 2023.10.13 |
[프로그래머스] Lv.2 삼각 달팽이 [Python, 파이썬] (0) | 2023.10.12 |
[프로그래머스] Lv.2 수식 최대화 [Python, 파이썬] KAKAO (0) | 2023.10.11 |
Comments