HashSet2 HashSet의 contains보다 if가 더 빠를 수도 있다. (LeetCode. 1456) 리트코드 문제Intuition해당 문자(char)가 모음(a,e,i,o,u)인지 확인하는 코드가 있었다.처음에는 모음을 가지고 있는 HashSet을 만들어 contains 메소드를 통해 O(1)의 속도로 모음이 존재하는 지 곧바로 확인하는 방식을 떠올렸다. 최악의 경우 영어의 모음 5개를 모두 확인하는 것보다 바로 해시값으로 해시테이블에 접근하여 한번에 데이터 유무(존재한다면 모음)을 판단하는 것이 더 빠르지 않을까라고 생각했기 때문이다. if의 O(5)보다 HashSet의 contains의 O(1)가 더 느리다.? 하지만, if를 활용하여 쇼트서킷 없이 모든 모음을 모두 순환하여 확인하는 경우보다 HashSet을 생성하여 contains여부를 확정적으로 한번 가져오는 동작이 더 긴 것으로 보인다. 이는.. 2024. 9. 20. HashSet에 hashCode() 재정의 없이도 중복제거가 가능할까 결록적으로 중복제거는 된다.하지만, 그렇게 되면 Hash의 장점은 없이 LinkedList처럼 된다.해쉬 충돌을 피하게 해줘야하는 이유와 비슷하다.equals()를 재정의했다면 hashCode()도 같이 해주자. 코딩테스트 문제를 풀기 위해 자체 클래스 Path를 생성했다.이 Path들의 객체를 중복없이 모은다음 개수를 리턴하기 위해 Set를 생성했고,이를 위해 출발값과 도착값이 같으면 같은 객체로 인식하기 위한 일련의 과정을 정리했다. 0. 코드설명Path 클래스필드 : int[] from, int[] to생성자 : 두 필드에 입력값을 받는 생성자만 존재 (from, to 에 null값이 존재하면 안되도록) 큰 값이 from에 오도록 정렬하여 생성. (방향만 다른 경우를 만들지 않.. 2024. 7. 22. 이전 1 다음