반응형
출처: programmers.co.kr/learn/courses/30/lessons/60057
코딩테스트 연습 - 문자열 압축
데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자
programmers.co.kr
풀이과정
문자열 앞에서부터 같은 것이 있으면 자르고 그 뒤에 더 길게 자를 수 있는 지 비교 해가면서 가장 짧은 문자열 만들기
참고코드
class Solution {
public int solution(String s) {
int answer = s.length();
for(int n=1 ; n<=s.length()/2 ; n++) {
StringBuilder temp = new StringBuilder();
for(int i=0 ; i<s.length() ; i = i+n) {
String word = "";
if(i+n >= s.length()) word = s.substring(i, s.length());
else word = s.substring(i, i+n);
int cnt = 1;
StringBuilder sb = new StringBuilder();
for(int j=i+n ; j<s.length() ; j=j+n) {
String word2 = "";
if(j+n >= s.length()) {
word2 = s.substring(j, s.length());
} else {
word2 = s.substring(j, j+n);
}
if(word.equals(word2)) {
cnt++;
i = j;
} else {
break;
}
}
if(cnt == 1) sb.append(word);
else sb.append(cnt).append(word);
temp.append(sb.toString());
}
answer = Math.min(answer, temp.toString().length());
}
return answer;
}
}
memo
그냥 문제 있는 그대로 구현하면 되는데 왜 못한걸까? 다시 해야겠다.
아마 문자열을 가지고 재가공 하는 과정이 아직 미숙한 것 같다.
반응형
'머리맞대는이야기 > 프로그래머스 (JAVA)' 카테고리의 다른 글
| [연습문제] 피보나치 수 (0) | 2020.10.23 |
|---|---|
| [정렬] H-index (0) | 2020.10.21 |
| [2019 카카오 개발자 겨울 인턴십] 크레인 인형뽑기 게임 (0) | 2020.10.18 |
| [Summer/Winter Coding] 스킬트리 (0) | 2020.10.16 |
| [깊이/너비 우선 탐색(DFS/BFS)] 네트워크 (0) | 2020.09.27 |