문자열 관련 문제였는데, 처음엔 좀 복잡하게 생각했다.
접미사가 뭐냐면 문자열의 특정 인덱스부터 끝까지니까, 이걸 어떻게 확인할까 고민하다가 직접 인덱스를 계산해서 비교하는 코드를 짰다.
근데 이게 일부 테스트 케이스에서 시간 초과가 났다.
int startIdx = my_string.length() - is_suffix.length();
if(startIdx >= 0){
answer = (my_string.substring(startIdx)).equals(is_suffix) ? 1 : 0;
}
이렇게 풀었는데, substring으로 자르고 equals로 비교하는 게 비효율적이었나 싶다.
그래서 Java API를 뒤져보다가 endsWith라는 메서드를 발견했다. 이걸 쓰니까 코드가 한 줄로 끝났다. 굿굿
return my_string.endsWith(is_suffix) ? 1 : 0;
이 문제 풀면서 느낀 건, 내가 API를 너무 모른다는 거다. endsWith( ) 같은 메서드가 있는 줄도 몰랐으니...
처음엔 복잡하게 풀었었는데, 이런 간단한 메서드 하나로 해결되니까 좀 허무하기도 했다.
다음엔 문제를 풀기 전에 관련 API를 먼저 찾아보는 습관을 들여야겠다고 다짐했다.
그리고 문자열 문제는 항상 경계 조건(빈 문자열이나 길이 0 같은 경우)을 조심해야겠다..휴
댓글
댓글 작성은 로그인 후에 가능합니다.