728x90
문제
https://programmers.co.kr/learn/courses/30/lessons/60057
풀이 코드
첫 풀이때 문자열의 길이가 1인 경우를 고려하지 못하여 풀이에 실패 했었다.
프로그래머스 채점시 테스트 5번만 실패한다면 문자열의 길이가 1인 경우를 확인해보자.
public class Solution {
public int solution(String s) {
int answer = Integer.MAX_VALUE;
//문자열 길이가 1인 경우 정답은 1
if(s.length() == 1) {
return 1;
}
for(int i = 1; i <= s.length()/2; i++) {
StringBuilder sb = new StringBuilder();
int count = 0; //반복 횟수
String target = s.substring(0, i); //반복 대상 문자열
for(int j = 0; j <= s.length(); j+=i) {
int start = j;
int end = Math.min(i + j, s.length());
String temp = s.substring(start, end);
if(temp.equals(target)) {
count++;
} else {
//반복 횟수가 1이면 압축 문자열에 숫자를 넣지 않는다.
if(count > 1) {
sb.append(count);
}
sb.append(target);
target = temp;
count = 1;
}
}
//반복 횟수가 1이면 압축 문자열에 숫자를 넣지 않는다.
if(count > 1) {
sb.append(count);
}
sb.append(target);
answer = Math.min(answer, sb.length());
}
return answer;
}
}
'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 행렬 테두리 회전하기 - 자바(Java), 구현, 2021 Dev-Matching: 웹 백엔드(상반기) (0) | 2021.10.21 |
---|---|
[2019 KAKAO BLIND RECRUITMENT] 오픈채팅방 - 자바(Java) (0) | 2021.10.15 |
[프로그래머스] 단체사진 찍기(2017 카카오 코드 본선) - 자바, DFS(깊이 우선 탐색) (0) | 2021.07.22 |
[프로그래머스] 소수 찾기 - JAVA, DFS(깊이 우선 탐색) (0) | 2021.07.16 |
[프로그래머스] 타겟 넘버 - 자바(java), 깊이 우선 탐색(DFS) (0) | 2021.07.12 |
댓글