목록HashMap (4)
개발자는 기록이 답이다

HashMap은 Map인터페이스 기반의 Hashtable 구현체라고 알려져 있다.구글링해서 많은 자료들을 찾아봤지만,CS에서 사용하는 HashTable이라는 개념과 Java코드로 구현한 Hashtable, HashMap을 같이 엮어서 생각해보려니까bucket, entry, node 등 용어들이 헷갈린다. 그래서 직접 디버깅하면서 원리를 파악해보고자 한다.(본 포스팅을 보기 전에 우선 동일성과 동등성 개념에 대한 이해가 있어야 한다) 1. HashSet은 중복을 허용하지 않는다 HashSet의 특징이라고 하면 순서가 중요하지 않고 중복을 허용하지 않는 자료구조라고 많이 알고 있다.그런데 이 "중복"의 기준이 뭘까? Person클래스를 만들어서 HashSet에 데이터를 저장할때 add()메소드를 사용할 것이..

https://school.programmers.co.kr/learn/courses/30/lessons/1845 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내가 푼 풀이 - HashMap 사용 문제가 최대 nums/2만큼 가져갈 수 있는데, 최대한 다양한 종류를 골라야 한다. 일단 다 map에 집어넣고, map사이즈가 max보다 작거나 같으면 map.size로 출력하고 아닐 경우 max로 출력했다. import java.util.*; class Solution { public int solution(int[] nums) { int answer = 0;..

5. 중복 확인 예시 입력 1 8 20 25 52 30 39 33 43 33 예시 출력 1 D 내가 푼 풀이 1 (Time: 790ms Memory: 34MB) 나는 정렬도 HashMap도 안쓰고 그냥 간단하게 풀었다. 시간복잡도가 O(n^2)이다. 하지만 지금 정렬파트를 보고 있으니 정렬로도 연습을 해야 한다. import java.util.Scanner; public class Main { public String solution(int n, int[] arr) { String answer = "U"; for (int i = 0; i < n-1 ; i++) { int tmp = arr[i]; for (int j = i+1; j < n ; j++) { if (tmp == arr[j]) return "D..

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 루프처럼 되는데, 입력값이 커질수록 시간 ..