꿈꿈개
꿈을 좇아 꿈틀꿈틀
꿈꿈개
전체 방문자
오늘
어제
  • 분류 전체보기 (24)
    • 코딩테스트 문제풀이 (16)
    • 일기 (1)
    • AI (0)
      • 논문리뷰 (0)
      • NLP (0)
      • CV (0)
    • 자료구조 (2)
    • 알고리즘 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 개발 #알고리즘 #자료구조
  • 일기 #개발자 #퇴사 #인생 #기록 #블로그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
꿈꿈개
코딩테스트 문제풀이

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

코딩테스트 문제풀이

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

2022. 8. 30. 20:13

https://school.programmers.co.kr/learn/courses/30/lessons/60057

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제

문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 비손실 압축방법을 표현하자

 

제한 사항

  • S의 길이는 1이상 1000이하
  • S는 알파벳 소문자로만 이루어져있다.

입출력 예시

sresult

"aabbaccc" 7
"ababcdcdababcdcd" 9
"abcabcdede" 8
"abcabcabcabcdededededede" 14
"xababcdcdababcdcd" 17

 

해결 방법

구현문제이다. 중복되는 단어의 갯수를 1부터 len(s)/2까지 설정해가며 중복된 단어를 찾아 축소하고 짧은 문자열의 최솟값을 찾는다. 

 

코드

def solution(s):
    answer=len(s)
    #스텝 설정
    for step in range(1, len(s)//2 +1) :
    	#압축 문자열 저장할 변수 초기화
        compressed=""
        #앞에서부터 step만큼 문자열 추출
        prev=s[0:step]
        #중복갯수 1로 초기화
        count=1
        for j in range(step, len(s), step) :
        	#step만큼 크기 증가시키며 이전 문자열과 비교
            #이전 상태와 동일하다면 count 1 추가
            if prev==s[j:j+step] :
                count+=1
            else :
            	#count가 2보다 크다면 앞에 카운트와 이전 상태 compressed에 추가, 2보다 작다면 그냥 이전 상태 추가
                compressed+=str(count)+prev if count>=2 else prev
                #다시 상태 초기화
                prev=s[j:j+step]
                count=1
        #남아있는 문자열에 대해서 처리
        compressed+=str(count)+prev if count>=2 else prev
        #만들어진 압축 문자열이 가장 짧은 것이 정답
        answer=min(answer, len(compressed))
    return answer

※<이것은 취업을 위한 코딩테스트다 (나동빈저)>를 참고하여 작성하였습니다.

'코딩테스트 문제풀이' 카테고리의 다른 글

[프로그래머스]두 큐 합 같게 만들기  (0) 2022.09.10
[백준] 경쟁적 전염  (0) 2022.09.07
[이것이 코딩테스트다] 문자열 재정렬  (0) 2022.08.30
[이것이 코딩테스트다] 럭키 스트레이트  (0) 2022.08.29
[이것이 코딩테스트다] 무지의 먹방라이브  (0) 2022.08.28
    '코딩테스트 문제풀이' 카테고리의 다른 글
    • [프로그래머스]두 큐 합 같게 만들기
    • [백준] 경쟁적 전염
    • [이것이 코딩테스트다] 문자열 재정렬
    • [이것이 코딩테스트다] 럭키 스트레이트
    꿈꿈개
    꿈꿈개
    꿈을 꾸는 개발자의 공부 일지

    티스토리툴바

    단축키

    내 블로그

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

    블로그 게시글

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

    모든 영역

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

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