[Java] 문자열 압축 - Lv2 프로그래머스 2020 KAKAO BLIND코딩테스트/프로그래머스2023. 3. 23. 07:22
Table of Contents
728x90
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/60057#
풀이
하나도 겹치지 않아 최소길이가 s의 길이가 될 수 있으므로 answer는 length에서 출발.
그냥 단순히 변수 생성으로 이전값과 현재값을 비교하여 sentence 변수 안에 넣어서 answer의 최소값을 Math.min()메서드를 사용하여 뽑아냈다.
substring()을 활용하여 자를 수 있는 최대의 경우의 수는 s가 짝수던 홀수던 간에 s.length()/2 만큼이다.
또한 end의 길이는 s의 길이보다 길 경우 에러가 발생되기 때문에 마찬가지로 min()메서드를 활용하여 최대 길이의 조건을 주었다.
class Solution {
public int solution(String s) {
int answer = s.length();
int count = 1;
String prev = "";
String next = "";
String sentence;
for(int i=1; i<=s.length()/2; i++){
sentence = "";
prev = s.substring(0, i);
for(int j=i; j<=s.length(); j+=i){
int end = Math.min(j + i, s.length());
next = s.substring(j, end);
if(prev.equals(next)) count++;
else {
if(count >= 2) sentence += count;
sentence += prev;
prev = next;
count = 1;
}
}
sentence += prev;
answer = Math.min(answer, sentence.length());
}
return answer;
}
}
728x90
300x250
@mag1c :: 꾸준히 재밌게
2023.04 ~ 백엔드 개발자의 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!