HelloMinchan
처음처럼
HelloMinchan
LinkedIn
전체 방문자
오늘
어제
  • 분류 전체보기 (306)
    • Backend (4)
      • NestJS (1)
      • Express (1)
      • Spring (2)
    • Infrastructure (1)
      • AWS (1)
    • Frontend (1)
      • Next.js (1)
    • Language & Runtime (4)
      • Java (2)
      • Node.js (2)
    • Computer Science (8)
      • Computer Networks (3)
      • Operating Systems (4)
      • OOP (1)
    • 독서 (4)
      • 데이터 중심 애플리케이션 설계 (3)
      • 객체지향의 사실과 오해 (1)
    • 회고 (4)
      • Project (2)
      • Career (2)
    • Deprecated (280)

채널

  • GitHub
  • LinkedIn

최근 글

태그

  • programmers
  • 알고스팟
  • 데이터베이스
  • 프로그래밍
  • 코딩
  • 프로그래머스
  • Database
  • 백준C++
  • front-end
  • 백준Python
  • Baekjoon Online Judge
  • 알고스팟Python
  • Algospot
  • 백엔드
  • 백준
  • 개발자
  • 백준Go
  • 프로그래머스Python
  • back-end
  • 프로그래머스C++

최근 댓글

인기 글

hELLO
HelloMinchan
Deprecated

[programmers] 프로그래머스 문자열 압축(Python)

[programmers] 프로그래머스 문자열 압축(Python)
Deprecated

[programmers] 프로그래머스 문자열 압축(Python)

2020. 6. 17. 04:41

(주)그렙

[programmers] 프로그래머스 문자열 압축

(Python)

(글쓴날 : 2020.06.17)

 


* programmers, 프로그래머스 문제 Python 언어 풀이입니다.

* 소스 코드의 저작권은 글쓴이에게 있습니다.


 

 

프로그래머스 문자열 압축


1) 문제

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/60057

 

코딩테스트 연습 - 문자열 압축

데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자

programmers.co.kr


2) 풀이 과정

* 시간 복잡도 : O(n²)

 

주어진 문자열을 반복되는 문자의 개수에 따라 압축할 때, 압축한 문자열의 최소 길이를 구하는 문제입니다.

 

저의 경우, 투 포인터 알고리즘을 적용하였고, Python을 사용했습니다.

문자열의 길이를 2로 나눈 몫만큼 압축할 단어의 길이를 제한하였고, 투 포인터를 이용한 리스트 슬라이싱을 통해 반복되는 문자열들을 딕셔너리에 저장해 압축하였습니다.

그렇게 압축할 단어의 길이마다 최종적으로 압축된 문자열들의 길이를 비교하여 가장 짧은 압축된 문자열의 길이를 구해 문제를 해결했습니다.


3) 코드

 

* Python 코드

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
def solution(s):
    if len(s) == 1:
        return 1
    
    answer = ""
    for c in range(1, len(s) // 2 + 1):
        start = 0
        finish = c
        
        temp = ""
        compString = ""
        compWord = dict()
        
        while 1:
            if start > len(s) - 1:
                break
                
            if not len(temp):
                temp = s[start:finish]
                compWord[temp] = 1
            else:
                if temp == s[start:finish]:
                    compWord[temp] = compWord[temp] + 1
                else:
                    compCount = compWord[temp]
                    if compCount > 1:
                        compString += str(compWord[temp])
                    compString += temp
                    
                    compWord = dict()
                    temp = s[start:finish]
                    compWord[temp] = 1
                    
            start += c
            finish += c
            
        compCount = compWord[temp]
        if compCount > 1:
            compString += str(compWord[temp])
        compString += temp
                    
        if not len(answer):
            answer = compString
        else:
            if len(answer) > len(compString):
                answer = compString
                
    return len(answer)

 

저작자표시 비영리 변경금지 (새창열림)

'Deprecated' 카테고리의 다른 글

[Baekjoon Online Judge] 백준 1766번 문제집(Python)  (0) 2020.06.17
[programmers] 프로그래머스 큰 수 만들기(Python)  (0) 2020.06.17
[programmers] 프로그래머스 주식가격(Python)  (0) 2020.06.17
[Baekjoon Online Judge] 백준 1005번 ACM Craft(Python)  (0) 2020.06.16
[Baekjoon Online Judge] 백준 2252번 줄 세우기(Python)  (0) 2020.06.16
  • [programmers] 프로그래머스 문자열 압축
  • (Python)
  • 프로그래머스 문자열 압축
'Deprecated' 카테고리의 다른 글
  • [Baekjoon Online Judge] 백준 1766번 문제집(Python)
  • [programmers] 프로그래머스 큰 수 만들기(Python)
  • [programmers] 프로그래머스 주식가격(Python)
  • [Baekjoon Online Judge] 백준 1005번 ACM Craft(Python)
HelloMinchan
HelloMinchan
Though you should not fear failure, You should do your very best to avoid it.

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.