-
[프로그래머스] 문자열 압축_Java코딩테스트 2024. 4. 18. 17:43
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/60057
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
1. 문자열 압축 시 압축할 수 있는 문자열의 단위는 1~ 문자열의 길이/2 사이의 값이다.
2. 문자열은 처음 시작 부분부터 압축할 단위의 크기대로 나누어 압축한다.
3. 문자열의 반복 횟수가 1일 경우 숫자는 생략하고, 1 이상일 경우 반복 횟수 + 반복 문자열로 압축할 수 있다.
4. 가장 짦은 압축 문자열의 길이를 반환한다.
코드
import java.util.*; class Solution { public int solution(String s) { int len = s.length(); int minLen = len; StringBuffer sb; for(int i=1; i<=len/2; i++){ sb = new StringBuffer(); int idx=0; while(idx<len){ String str = s.substring(idx,idx+i); int cnt =1; while(idx+cnt*i < len && s.substring(idx+cnt*i).indexOf(str) == 0) cnt++; sb.append(cnt !=1 ?cnt+str : str); idx += cnt*i; if(idx+i>len) { sb.append(s.substring(idx)); break; } } minLen = Math.min(minLen, sb.toString().length()); } return minLen; } }
실행 결과
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 괄호 회전하기_Java (0) 2024.04.26 [백준] 30970 선택의 기로_Java (0) 2024.04.24 [프로그래머스] 큰 수 만들기_Java (0) 2024.04.23 [프로그래머스] 영어 끝말잇기_Java (0) 2024.04.22 [프로그래머스] 멀리 뛰기_Java (0) 2024.04.19