목록해쉬 (4)
개발자는 기록이 답이다
Effective Java를 공부하다보면 아래와 같은 파트가 있다. equals와 hashCode에 대해 디테일하게 알아보는 시간을 갖고자한다. 'equals는 일반 규약을 지켜 재정의하라' 'equals를 재정의하려거든 hashCode()도 재정의하라' equals와 hashcode 메소드에 대해 알아보자 equals와 hashCode는 모든 Java 객체의 부모 객체인 Object 클래스에 정의되어 있다. 그렇기 때문에 Java의 모든 객체는 Object 클래스에 정의된 equals와 hashCode 함수를 상속받고 있다. 따라서, 클래스에서 이 메소드들을 사용하거나 오버라이드하여 재정의할 수 있다. 🚩 equals란 ? 2개의 객체가 동일한지 검사하기 위해 사용된다. 2개의 객체가 가리키는 곳이 동..
3. 매출액의 종류(Hash, sliding window) 예시 입력 1 7 4 20 12 20 10 23 17 10 예시 출력 1 3 4 4 3 내가 푼 틀린 풀이(Time: 1979ms Memory: 35MB) - Time Limit Exceeded 해쉬랑 슬라이딩 윈도우 사용하면 된다그래서, 해쉬셋을 사용했는데, 시간 초과가 나왔다. 입력값이 10만 이상이면 명시적으로 하나의 for문이라도 rt를 이전으로 옮겨서 다시 for문을 돌게 해서 시간 초과가 나는 것 같다. 시간 초과 문제는 rt와 lt를 조작하여 슬라이딩 윈도우를 이전으로 돌리는 부분에서 발생하는 것 같다. 주어진 코드에서 rt와 lt를 이동시키면서 슬라이딩 윈도우를 관리하면 결국 중첩된 for 루프처럼 되는데, 입력값이 커질수록 시간 ..
2. 아나그램(해쉬) 예시 입력 1 AbaAeCe baeeACA 예시 출력 1 YES 예시 입력 2 abaCC Caaab 예시 출력 2 NO 내가 푼 풀이(Time: 157ms Memory: 27MB) 해쉬맵을 별로 안써봐서 출력해가면서 풀어야 했다. 강의를 다 듣고 나면 프로그래머스에서 해쉬맵 문제도 풀어봐야겠다. import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class Main { public String solution(String a, String b) { String answer = "YES"; HashMap firstMap = new HashMap(); HashMap secondMap = new ..
1. 학급 회장(해쉬) 예시 입력 1 15 BACBACCACCBDEDE 예시 출력 1 C 강의 풀이(Time: 159ms Memory: 27MB) HashMap에 대한 이해가 필요하다. map.put(key,value) : map의 데이터 자료 생성 map.get(key) : key에 해당하는 value값을 리턴 map.getOrDefault(key, 0) : map 객체에 key가 있다면 value값을 가져오고, 없으면 0을 리턴 map.keySet() : 존재하는 key를 전부 탐색 - for each에서 사용 map.containsKey(key): 맵 객체에 해당하는 key가 존재하는지 확인 후 boolean 리턴 map.size() : 존재하는 key의 개수를 리턴 map.remove(key) :..