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 |
Tags
- 단계별문제풀이
- ODQA
- 백준
- 다시보기
- 파이썬 3
- 부스트캠프_AITech_3기
- 정렬
- mrc
- dfs
- 그리디
- 구현
- 알고리즘_스터디
- 이진탐색
- 주간회고
- 백트랙킹
- 글또
- 기술면접
- python3
- 최단경로
- dp
- U_stage
- Level2_PStage
- Level2
- 이코테
- 부스트캠프_AITech3기
- 알고리즘스터디
- 프로그래머스
- Level1
- 개인회고
- 그래프이론
Archives
- Today
- Total
국문과 유목민
[구현] 문자열 압축 본문
"이것이 코딩테스트다(나동빈 저)"에서 나온 문제에 대한 코드를 다루고 있습니다.
문제에 대한 구체적인 설명과 조건 등은 책을 참고해주시기 바랍니다.
소요시간: 53분
1. 문제 설명
- 문자열이 주어지면 문자를 최소한의 길이로 압축할 수 있는 방법을 찾는다.
2. 접근 방식
- s의 길이가 1000밖에 안되기 때문에 다 돌아봐도 괜찮을 거 같다
- shortest path의 길이를 우선 s의 최대 길이로 설정해서 진행하면 기준을 정하기 쉬울 거 같다
3. 코드
def solution(s):
shortest = len(s)
for i in range(1, (len(s)//2)+1):
# 값 초기화
tmp = []
count = 1
tmp_str = ""
idx = 0
# 리스트 삽입 (리스트에 남은 값이 다 들어가야 한다.)
while idx < len(s)+i:
tmp.append(s[idx: idx+i])
idx += i
for k in range(0, len(tmp)-1):
if tmp[k] != tmp[k+1]:
if count ==1:
tmp_str += tmp[k]
else:
tmp_str += str(count) + tmp[k]
count = 1
else:
count+=1
shortest = min(len(tmp_str), shortest)
return shortest
4. 코멘트
- 예전에 풀었던 기억이 있던 것 같은데 하나도 기억이 안 나서 ... 새로운 문제 풀듯이 풀었다.
- 그래도 예전보다는 코드 길이를 많이 줄인 거 같긴 하다. 변수 선언 부분을 줄이면 조금 더 코드를 줄일 수 있을 거 같긴 하다.
- 시간은 그래도 좀 많이 걸렸는데 다음에 풀면 조금 더 빠르게 풀 수도 있을 거 같다.
'알고리즘_코딩테스트 > 이것이 코딩테스트다' 카테고리의 다른 글
[구현] 뱀 (0) | 2021.12.13 |
---|---|
[구현] 자물쇠와 열쇠 (0) | 2021.12.13 |
[구현] 문자열 재정렬 (0) | 2021.12.13 |
[구현] 럭키 스트레이트 (0) | 2021.12.13 |
[그리디] 무지의 먹방 라이브 (0) | 2021.12.12 |