문제
https://school.programmers.co.kr/learn/courses/30/lessons/60057
풀이
자바에서는 substring 메서드를 이용해서 문자열을 자를 수 있다.
문자열을 1부터 n/2크기까지 자르고 첫번째로 자른 문자열 이후부터 첫번째 문자열과 비교하면서 일치하면 압축하면된다.
코드는 다음과 같이 작성하였다.
import java.util.*;
class Solution {
public int solution(String s) {
int answer = s.length();
int count = 1;
for(int i = 1; i <= s.length()/2; i++) {
StringBuilder sb = new StringBuilder();
String origin = s.substring(0,i);
for(int j = i; j <= s.length(); j += i) {
int endIdx = Math.min(j+i, s.length());
String tar = s.substring(j, endIdx);
if(origin.equals(tar)) {
count++;
} else {
if(count >= 2) {
sb.append(count);
}
sb.append(origin);
origin = tar;
count = 1;
}
}
sb.append(origin);
answer = Math.min(answer, sb.length());
}
return answer;
}
}
'Problem Solving > CT-Java' 카테고리의 다른 글
[프로그래머스/구현] 77485 행렬 테투리 회전하기 - JAVA (0) | 2023.09.16 |
---|---|
[프로그래머스/문자열] 60065 튜플 - JAVA (0) | 2023.09.16 |
[SWEA/순조부] 6808: 규영이와 인영이의 카드게임 - 자바 (0) | 2022.08.28 |
[SWEA/구현] 무선 충전 [모의 SW 역량테스트] - 자바 (0) | 2022.08.27 |
[백준/BFS] 16236: 아기상어 - 자바 (0) | 2022.08.27 |