byeol2ing
2021. 9. 17. 18:57
반응형
import java.util.*; class Solution { //1. (1부터 문자열 길이/2)개 씩 반복하여 같은지 비교 하여 압축 //2. 더 짧은 문자열길이 분석하는 함수를 만들어 더짧은지 비교 후 짧은 값 대입 public int solution(String s) { int answer = s.length(); for(int i=1; i<=s.length()/2; i++){ int pos =0; int len = s.length(); for( ;pos+i<=s.length(); ){ String now = s.substring(pos,i+pos); pos += i; int cnt = 0; for( ;pos+i<=s.length(); ){ if(now.equals(s.substring(pos, i+pos))){ ++cnt; pos += i; }else{ break; } } if(cnt > 0){ len -= i*cnt; if(cnt <= 9){ len += 1; }else if(cnt <= 99){ len += 2; }else if(cnt <= 999){ len += 3; }else{ len += 4; } } } answer = Math.min(answer, len); } return answer; } } |
이건.. 테스트케이스 두개정도가 실패로 뜬다.........ㅠㅠ
사실 이문제는 처음보았을땐 띠용.... 머리가 새하얘졌었다. 그래서 유튜브에 혹시 강의가 있나 보고 강의를 보고 그대로 다시 풀어본 문제이다...!
이문제의 핵심은 //1. (1부터 문자열 길이/2)개 씩 반복하여 같은지 비교 하여 압축
//2. 더 짧은 문자열길이 분석하는 함수를 만들어 더짧은지 비교 후 짧은 값 대입
이외에도 position(위치 변수를)두어 해당 위치까지의 문자열을 비교하는 방법을 생각해내는것이 관건이었던것 같다......................!
이문제는 꼭 다시한번 풀어보아야 할 것 같다 ...............
반응형