A,B,C 로만 구성된 문자열이 주어지고,
AA, BB, CC 처럼 두 문자가 연속되어 나타날때 제거를 반복하여
마지막에 남은 문자열을 출력하는 문제이다.
function solution(S) {
while (/AA|BB|CC/g.test(S)) {
S = S.replace(/AA|BB|CC/g, '');
}
return S;
}
처음에는 위와 같이 정규표현식으로 풀었는데
짝수 팰린드롬 문자열에서 timeout에러가 났다.
'ABABBABA' 같은 문자열일 경우, 한번에 한 짝씩 밖에 제거를 못하고
계속 반복해야하므로 시간이 오래걸린다.
codility는 내가 작성한 풀이를 분석하여
시간복잡도와 어떤 케이스에서 어떤 에러가 발생했는지 자세하게 알려주는 점이 좋다.
케이스들에는 규칙이 있는데 이런 케이스들을 잘 기억해두었다가 다음 문제를 풀 때, 예외 케이스 찾아낼 때도 참고할 수 있다.