알고리즘/프로그래머스

[프로그래머스]JAVA - Level 2. 문자열 압축

K.두부 2022. 4. 17. 14:33
반응형

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

 

프로그래머스

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

programmers.co.kr

class Solution {
public int solution(String s) {
int answer = Integer.MAX_VALUE;
int slen = s.length();
if (slen == 1) return 1; // 문자열 길이가 1일 경우
for (int i=1; i<=slen/2; i++) {
String word1 = s.substring(0,i); // 첫번째 문자열
String word2 = "";
String temp = "";
int cnt = 1;
for (int j=i; j<=slen; j+=i) {
int one = j;
int two = j+i > slen ? slen : j+i;
word2 = s.substring(one, two); // 두번째 문자열
if (word1.equals(word2)) cnt++; // 같을 경우 숫자 증가
else {
if (cnt > 1) temp += cnt; // 다를 경우 숫자 입력 및 전 단어 입력
temp += word1;
cnt = 1; // 숫자 초기화
}
word1 = word2;
}
// 마지막 문자열 입력
if (cnt > 1) temp += cnt;
temp += word1;
answer = Math.min(temp.length(), answer);
}
return answer;
}
}
반응형