https://programmers.co.kr/learn/courses/30/lessons/60057
이거보고 그냥저냥 해볼만 한것같은데 해서 댐볐는데 문자열 자르고 카운팅하는거에서 고민하는데
코드 봐줄사람은 없고 계속 맨땅에 헤딩만하면서 대굴빡만 점점 박살나는것같음
public int solution(String s) {
int answer = s.length();
String nowMinimum[] = new String[s.length()]; // i크기로 문자열을 잘랐을때 문자열배열 i번째에 저장될 문자열
for(int i=0; ilength; i++){
nowMinimum[i] = ""; //nullPointException 방지
}
for(int i =1; i; i++){//문자열 자르는 크기
int count = 1;
String tmp = ""; // i크기로 문자열을 잘랐을때 문자열배열 i번째에 저장될 문자열
String left =""; // 새로 들어온 문자열과 비교할 문자열을 저장
String right = ""; // 매번 문자열을 새로 잘라서 저장
int j;
for(j=i; j; j=j+i){//문자열 순회
right = s.substring(j-i,j); // j는 i로 시작하고 j-i는 항상 0이니 처음은 0번째부터 i번째문자열까지 자름
if(right.equals(left)){ // 기존 문자열과 새로 들어온 문자열을 비교했을때 같으면 카운팅증가
count++;
}else if(!left.equals(right)){ // 기존 문자열과 새로운 문자열이 다를때.
// 항상 매번 새로운크기로 자를때마다 여기서 시작할것임.
if(count >1) tmp = tmp + left + count; //2번이상반복되는 문자열이 끝났을때 기존문자열+문자열+카운팅숫자
else tmp = tmp + left ; //문자열이 반복이 안되고 다른문자열이 들어왔을때 기준문자열+문자열
left = right; // 반복이 끝났으니 새로들어온 문자열로 비교를 해야하니 왼쪽에 저장.
count=1; //카운팅숫자 초기화
}
if(j-i//반복문 종료후 문자열 초과시
if (count > 1) tmp = tmp + left + count; //왼쪽(기존)문자열과 오른쪽(신규)문자열이 끝까지 같으면 출력이 안됨
// 위에서 왼쪽에 저장되고 카운팅이 됬을테니 출력만 해주면됨
else tmp = tmp + right; //카운팅이 안된 문자열이라면 마지막으로 잘랐을 문자열이 서로 다를테니 새로 들어온문자열을 추가저장
tmp += s.substring(j-i); //일정한 숫자로 잘랐을때 남는 문자열들을 뒤에 저장.
}
}
nowMinimum[i]=tmp; //일단 자른 갯수의 크기 = 순서 순으로 저장해봄
}
for(int i=0; ilength; i++){ //원하는 대로 잘 잘려서 저장이 됬는지 확인
System.out.print("answer ["+i+"]:"+nowMinimum[i]+" \n");
if(nowMinimum[i].length()!=0&&nowMinimum[i].length() answer = nowMinimum[i].length();
}
}
System.out.println(answer);
return answer;
}
}
질문글 올리기전에 좀 더 고친다고 고쳐봤는데 더 망가짐
전 빡대가립니다.
일주일전에 뇌ct 결과가 노인마냥 쭈그러들었다는데 그것도 프로그래밍 못하는거 한몫함?ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 씨발
댓글 0