삼성에서 주관하는 알고리즘 특강에서 라빈-카프 알고리즘에 대해서 배웠다. 그런데 한 가지 의문 사항이 생겼다. 문자열을 equals로 비교하는 것이 O(1)일텐데 왜 굳이 해시로 바꿔서 비교를 해야 하냐는 것이었다. (밑에 작성했지만 이는 사실이 아니었다!!) String.Equals String 인스턴스의 equals 메서드를 살펴봤다. (JDK 13 기준) 해당 메서드에서는 StringLatin1.equals() 메서드를 호출하고 있다. StringLatin1.equals() 메서드를 보자! bytes 배열 요소를 전부 비교하고 있음을 알 수 있었다. 참고로 String의 value 타입은 Jdk 버전마다 구현이 다르다. jdk 8의 경우에는 아래와 같이 char 배열을 사용하고, 아래와 같이 비교하..