Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- DFS
- 동적
- 2중포문
- 최빈값
- 404에러
- 소트인사이드
- 스프링프레임워크
- 최단거리
- 브루트포스
- 퇴각검색
- 동적계획법
- 그리디
- 소트
- 백준
- 코딩테스트
- 그리디알고리즘
- 스프링
- 다익스트라
- 정렬
- 코테
- Python
- 월간 코드 챌린지 시즌2
- 통계학
- 백트래킹
- 덩치
- 스택
- Backtracking
- 파이썬
- sort
- 프로그래머스
Archives
- Today
- Total
취준생의 코딩테스트 연습기
[프로그래머스] 문자열 압축 / 파이썬(python) 본문
# 문제 링크
https://programmers.co.kr/learn/courses/30/lessons/60057
# Soultion
2차원 리스트를 이용하여 마지막에 저장된 문자열과 같으면, 카운팅을 증가해주는 방식으로 해결했다.
주의할점은, 카운팅의 개수가 10개이상일때 18번 라인처럼 처리해줘야한다는 점이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
def solution(s):
answer = 0
cnt = len(s)
for i in range(1,len(s)//2+1):
li = []
for j in range(0,len(s),i):
if not li:
li.append([s[j:j+i],1])
else:
if li[-1][0]!=s[j:j+i]:
li.append([s[j:j+i],1])
else:
li[-1][1] +=1
chk = 0
for k in li:
if k[1]!=1:
chk+=len(str(k[1]))
# chk+=1
chk+=len(k[0])
cnt = min(cnt,chk)
return cnt
|
cs |
3. 최소값을 저장해주기 위한 변수
4. 몇개의 문자열로 압축을 할 것인지에 대한 for문. 문자열의 길이가 8이면 4까지만 확인하면 된다.
6. i개의 문자열만큼씩 압축하므로 인덱스를 확인하기 위한 for문
7. 스택이 비었으면 삽입해준다.
12. 마지막에 들어있는 스택의 문자열과 같다면 카운팅 증가
15~21. 최소 문자열을 구하기 위한 코드
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 더 맵게 / 파이썬(python) (0) | 2021.05.23 |
---|---|
[프로그래머스] 기능개발 / 파이썬(python) (0) | 2021.05.22 |
[프로그래머스] 짝지어 제거하기 / 파이썬(python) (0) | 2021.05.22 |
[프로그래머스] [1차] 비밀지도 / 파이썬(python) (0) | 2021.05.22 |
[프로그래머스] 직사각형 별찍기 / 파이썬(python) (0) | 2021.05.21 |
Comments