일단 이 문제는 문자열의 특정 구간을 뒤집는 쿼리를 처리하는 거였다. 처음엔 새로운 문자열을 계속 만들어서 붙였는데, 메모리가 너무 많이 들 것 같아서 StringBuilder를 썼다. 근데 replace 메서드 쓸 때 인덱스 범위를 잘못 계산해서 일부 테스트 케이스가 실패했다.

for(int i = 0; i < queries.length; i++){
    String reverseStr = new StringBuilder(str.substring(queries[i][0], queries[i][1] + 1)).reverse().toString();
    str.replace(queries[i][0], queries[i][1] + 1, reverseStr);
}

이렇게 풀었는데, 처음엔 substring( )으로 자른 문자열을 직접 뒤집으려고 했다가 StringBuilder의 reverse()가 훨씬 편하다는 걸 알았다. 그래도 인덱스 계산할 때 queries[i][1] + 1 부분을 헷갈려서 몇 번 고쳤다. 이 문제로 StringBuilder의 효율성을 다시 느꼈고, 쿼리 처리 순서를 명확히 확인하는 게 중요하다는 걸 배웠다. 다음엔 인덱스 범위부터 꼼꼼히 체크해야겠다.