[문제 비공개]
import java.util.*;
public class Solution {
public int solution(String s, String t) {
int count = 0;
StringBuilder builder = new StringBuilder();
int index = 0;
int block_length = t.length();
while(index < s.length()) {
builder.append(s.charAt(index++));
// continue if current string's length not enough to check target.
if(builder.length() < block_length) {
continue;
}
// if built string is long enough to check block.
// check changing block found.
int startIndex = builder.length() - block_length;
int endIndex = builder.length();// - 1; substring is exclusive
// if target string is found, remove from builder and count.
if(builder.substring(startIndex, endIndex).equals(t)) {
count++;
builder.delete(startIndex, endIndex);
}
}
return count;
}
}
역시 문자열 처리 문제였는데 로직의 까다로움보다는 성능 처리에 더 중점을 둔 문제였다. 단순히 메서드만 호출하면 몇 줄 내로 요구사항은 구현 가능하지만 시간 복잡도에 걸리기 때문에 어떻게 하면 제약 사항을 만족하면서 문자열을 처리할 수 있을지 고민하게 된 문제였다.
테스트를 위해 직접 수십만 자리 문자열을 만들어서 돌려봤는데 시간 초과는 발생하지 않았다. 뿌듯했지만 시간을 너무 많이 써서 2번 문제를 제대로 못 풀어서 아쉽다.