더북(TheBook)

새로운 토큰이 등장했다면 직전까지 등장한 문자열을 이용하여 압축 문자열을 구성해줍니다. 이때 등장 횟수 count는 2 이상일 때만 압축 문자열에 포함되고, 압축 문자열을 구성한 후에는 현재 검사한 token부터 다시 셀 수 있도록 lastcount를 업데이트해야 한다는 것을 잊지 마세요.

for (String token : split(source, length)) {
    if (token.equals(last)) {
        count++;
    } else {
        if (count > 1) builder.append(count);
        builder.append(last);
        last = token;
        count = 1;
    }
}

이렇게 for 문을 나오면 아직 마지막 토큰은 last에 담긴 채로 압축 문자열에 포함되지 않은 상태입니다. 따라서 압축 문자열을 구성하는 로직을 for 문 이후에 1회 더 추가해야 합니다.

for (String token : split(source, length)) {
    if (token.equals(last)) {
        count++;
    } else {
        if (count > 1) builder.append(count);
        builder.append(last);
        last = token;
        count = 1;
    }
}
if (count > 1) builder.append(count);
builder.append(last);

이렇게 compress() 메서드가 완성되었습니다.

 

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.