목록set (4)
변수의 기록
문제 설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때, 체육수업을 들을 수 있는 학생의 최댓값을 return 하도록 solution 함수를..

사용자 정의 객체와 HashSet, HashMap에서의 중복 처리자바에서 HashSet이나 HashMap 같은 해시 기반 컬렉션은 객체의 중복 여부를 판단하기 위해 내부적으로 hashCode()와 equals() 메서드를 사용한다. 이 글에서는 개발자가 직접 정의한 클래스를 해시 테이블에 넣을 때, 중복을 어떻게 처리하고, 주의할 점은 무엇인지 정리한다.1. 중복 판단 기준HashSet이나 HashMap은 객체를 저장하거나 검색할 때 다음 절차를 따른다:hashCode()로 해시값을 계산 → 어느 버킷(인덱스)에 저장할지 결정해당 버킷 안에서 equals()로 같은 객체인지 판단즉, 같은 해시값을 가지면서 equals()도 true여야 동일한 객체로 간주되어 중복 저장이 되지 않는다.2. 개발자가 해야 ..

1. Set이란 무엇인가? (ADT 관점)Set은 데이터를 저장하는 추상 자료형(ADT) 중 하나입니다.특징적으로 다음과 같은 성질을 가집니다:중복을 허용하지 않는다요소의 순서를 보장하지 않는다데이터의 존재 유무를 빠르게 확인할 수 있다이러한 동작을 제공하는 구조만 정의된 것이 Set이라는 ADT이고,Java에서는 Set 인터페이스와 이를 구현하는 다양한 클래스(HashSet, LinkedHashSet, TreeSet)를 통해 이 ADT를 실현합니다.2. Set의 사용 목적 및 언제 사용하는가✅ Set이 유리한 상황중복 제거가 필요한 경우→ 예: 사용자 입력값 정제, 태그 중복 제거 등순서가 중요하지 않은 데이터 집합→ 예: 허용된 IP 주소 목록, 이미 방문한 노드 기록 등특정 데이터가 존재하는지 여부..
2025년 4월 3일자바 자료구조 공부자료구조 기초 정리1. 배열 (Array)배열은 동일한 자료형의 데이터를 연속된 메모리 공간에 저장하는 선형 자료구조로, 인덱스를 기반으로 한 임의 접근(random access)이 가능하다. Java에서 배열은 선언 시 고정된 크기를 가지며, 이후 크기를 변경할 수 없다. 배열은 인덱스를 이용한 조회 연산에서 시간 복잡도 O(1)의 효율을 가지며, 삽입 또는 삭제 시 전체 데이터를 이동해야 하므로 O(n)의 시간 복잡도를 갖는다. ex) int[] arr = new int[5];arr[0] = 10; 배열은 메모리상 연속된 공간을 점유하므로 CPU 캐시 효율이 높고, 인덱스를 통한 접근이 매우 빠르다. 그러나 삽입과 삭제 연산이 잦은 경우에는 성능상의 단점이 존재한..