# HashSet

106개의 포스트
post-thumbnail

Set 자료구조

Set HashSet 🍪 중복 불허: HashSet은 집합이므로 중복된 원소를 허용하지 않습니다. 🍪 순서 없음: 원소는 특정한 순서 없이 저장됩니다. 🍪 빠른 검색 및 삽입 속도: 내부적으로 해시 테이블을 사용하여 데이터를 저장하므로, 검색 및 삽입 속도가 빠릅니다. 🍪 Null 원소: HashSet은 null 값을 하나 허용합니다. 🍪 다양한 집합 연산: Set 인터페이스를 구현하기 때문에 집합 연산(교집합, 합집합, 차집합 등)을 기본적으로 지원합니다. 시간 복잡도 삽입: ${O(1)}$ 삭제: ${O(1)}$ 검색: ${O(1)}$ 공간 복잡도 ${O(n)}$ 메소드 기본 연산 | 메서드 | 설명

6일 전
·
0개의 댓글
·

[백준] 1764 듣보잡

실버 4문제이다 문제 김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다. 듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다. 출력 듣보잡의 수와 그 명단을 사전순으로 출력한다. 풀이방법 1.듣도 못한 못한 사람은 HashSet에 저장 2.보도 못한 사람은 변수에 저장 3.반복문을 돌려 constrains 메소드를 사용해 비교하여 중복된 데이터를 ArrayList에 저장 4.Collections.so

2023년 9월 6일
·
0개의 댓글
·
post-thumbnail

[구름톤 챌린지] 2주차 학습 일기 (1)

구름문제 IDE 문제 6~8 배운점 ✨ 1) 완전 탐색의 의미 그동안 for문을 이용해서 모든 경우의 수를 구해본적은 있었는데 그게 완전탐색이라는 것을 알게 되었다. >완전탐색(Exhaustive Search)은 컴퓨터 과학 및 알고리즘 이론에서 사용되는 개념이다. 이 방법은 가능한 모든 경우의 수를 시도하고 조사함으로써 문제를 해결하려는 접근법을 나타낸다. 다른 말로는 브루트 포스(Brute Force)라고도 한다. 완전탐색은 주로 주어진 문제의 모든 가능한 해답을 찾는데 사용된다고 한다. 이를 위해 모든 조합이나 순열을 시도하여 최적의 해답이나 원하는 결과를 찾아내는데, 하지만 이 방법은 가능한 경우의 수가 많을 경우에는 계산비용이 매우 크다는 단점이 있다고 한다. 나중에 경우의 수가 적을 경우에는 완전탐색을 활용하고, 경우의 수가 많거나 문제가 복잡한 경우에는 보다 효율적인 알고리즘 기법들

2023년 8월 26일
·
0개의 댓글
·

[JAVA] 자료구조_Set[2]

1. Set 이란? : 중복되지 않은 값을 저장하는 자료구조 : 집합연산이나 중복을 허용하지 않는 데이터 저장에 사용 : HashSet, LinkedHashSet, TreeSet, EnumSet 등 >2. Set 특징 : 중복된 값 저장 X - 같은 값을 저장하더라도 한번만 저장됨. : 검색 및 삽입 속도 빠름. : Null 허용 1. hashSet : Java의 컬렉션 프레임워크에서 제공되는 클래스 중 하나 : 중복 값 허용 X : 순서 보장 X * HashSet 사용 예시 2. LinkedHashSet : 해시 테이블과 연결 리스트를 결합한 Set 인터페이스의 구현체 : 중복 값 허용 X : 순서 보장 * LinkedHashSet 사용 예시

2023년 8월 18일
·
0개의 댓글
·

[JAVA] 자료구조_Map[1]

Map 이란? java의 인터페이스로, 키-값 쌍을 저장하는 자료구조 키와 값을 연결하여 저장 키(key)는 중복될 수 없음! Map의 종류 : hashMap, TreeMap, LinkedHashMap등 1. HashMap : Map 인터페이스를 구현한 클래스 중 하나. : 해시 테이블을 사용하여 키-값을 저장. : 빠른 검색과 삽입 속도 : 키와 값에 null 허용 : 값 중복 허용 O, 키 중복 허용 X : 무순서(Unordered) - 삽입 순서를 기억하지 않음. : 일반적으로 가장 빠른 검색 속도를 가지며 많은 양의 데이터를 관리할때 유용. * HashMap 사용 예시: 2. LinkedHashMap : Map 인터페이스를 구현한 클래스 중 하나. : 해시 테이블과 연결 리스트를 결합하여 키-값 쌍을 저장 : 빠른 검색과 삽입 속도 : 키와 값에 null 허용 : 값 중복 허용 O, 키 중복 허용 X : 무순서(Unordered

2023년 8월 18일
·
0개의 댓글
·
post-thumbnail

코딩테스트를 위한 자바 메소드 정리(3) - HashSet

HashSet Set 인터페이스를 구현한 대표적인 컬렉션이며 데이터의 저장순서가 유지되지 않고 중복을 허용하지 않는다. 저장 순서를 유지하고 싶다면 LinkedHashSet을 사용해야 한다. 생성자 HashSet() : HashSet 객체를 생성 HashSet(Collection c) : 주어진 컬렉션을 포함하는 HashSet 객체 생성 HashSet(int intitialCapacity) : 주어진 값을 초기용량으로 하는 HashSet 객체 생성 HashSet(int intitialCapacity, float loadFactor) : 초기 용량과 load factor를 지정하는 생성자 > 🚨 load factor 란 ? 저장공간이 가득

2023년 7월 7일
·
0개의 댓글
·
post-thumbnail

JAVA HashSet으로 List 중복값 체크

🔸HashSet 이란? 집합 데이터 자료구조로 특정 원소를 검색하는 용도가 아닌 대상 원소가 집합에 존재하는지 여부를 확인하는 용도로 많이 사용된다. ( Fast Lookup ) 데이터를 비순차적으로 저장한다. ( 순서를 보장하지 않음 ) 데이터를 중복으로 삽입할 수 없다. ▼ 이런 특징을 활용해 ArrayList에 중복값이 있는지 간단하게 체크할 수 있다. 이처럼 Set을 활용하면 중복되는 데이터가 있을 경우 특정 기능을 수행해야 할 때 활용할 수 있다. ▼ 하지만 중복되는 데이터가 무엇인지 찾으려면 indexOf 와 lastIndexOf 를 같이 활용해야 한다.

2023년 6월 24일
·
0개의 댓글
·
post-thumbnail

HashSet

HashSet – 순서X, 중복X Set 컬렉션 클래스에서 가장 많이 사용되는 클래스 해시알고리즘을이용하여검색속도가매우빠름 LinkedHashSet을 이용하면 순서를 유지할 수 있음 코드 예시 hashSet hashSet_list

2023년 6월 23일
·
0개의 댓글
·

[JAVA] HashMap과 HashSet의 차이점

프로그래머스 폰켓몬 문제를 풀다가 궁금해져서 찾아봤다 >### 차이점 1. 데이터 저장 형태 HashMap은 value와 key 형태로 저장 HashSet은 객체 그 자체를 저장 2. 중복 허용 여부 HashMap은 중복 value는 허용하지만 중복 key는 허용 X ->{'사과': 1, '포도': 1} HashSet은 객체 그 자체를 저장하기에 중복을 허용하지 않는다. ->{1, 2, 3} (폰켓몬 코드 中)

2023년 6월 21일
·
0개의 댓글
·

1764 - 듣보잡(S4)

문제 https://www.acmicpc.net/problem/1764 풀이 HashSet으로 값을 추가한 후, contains를 사용하여 중복값을 확인. 이후 중복값은 PriorityQueue를 통해 출력하였음. Class에 Comparator를 굳이 달 필요는 없었다. 코드

2023년 6월 15일
·
0개의 댓글
·

자바의 정석 ch11-37,38 HashSet(2)

HashSet 순서를 유지하지 않고, 중복을 허용하지 않는다. HashSet은 객체를 저장하기 전에 기존에 같은 객체가 있는지 확인. 같은 객체가 없으면 저장하고, 있으면 저장하지 않는다. ex) 객체를 확인하기 때문에 Integer 타입의 1과 String 타입의 1은 각각 저장이 된다. boolean add(Object o)는 저장할 객체의 equals()와 hashCode()를 호출 equals()와 hashCode()가 오버라이딩 되어 있어야 중복을 확인할 수 있다. 예제 Person이라는 클래스가 있다. 밑의 코드처럼 오버라이딩 해 줘야 한다. > 이클립스 기능 중에 Source -> Generate hashCode() and equals()...을 선택하면 자동으로 오버라이딩을 해준다. 다만 위의 예제 코드 처럼 코드 변경이 필요하다.

2023년 6월 15일
·
0개의 댓글
·

자바의 정석 ch11-34~36 HashSet(1)

HashSet - 순서X 중복X HashSet Set 인터페이스를 구현한 대표적인 컬렉션 클래스 순서를 유지하려면 LinkedHashSet 클래스를 사용하면 된다. TreeSet 범위 검색(from~to)과 정렬에 유리한 컬렉션 클래스 HashSet보다 데이터 추가, 삭제에 시간이 더 걸림 HashSet의 주요 메서드 HashSet() HashSet(Collection c) : 생성자를 갖고 있다. 지정된 컬렉션에 모든 객체를 저장. HashSet(int initialCapacity) : 초기 용량을 정해준다. (보통 2배로 늘린다) HashSet(int initialCapaity, float loadFactor) : 초기 용량을 언제 늘릴건지. ex) 80% 찼을 때 \*2를 해서 2배로 늘린다. boolean add(Object) : 추가 (추가가 되면 true, 중복되어 추가가 안되면 false를 반환)

2023년 6월 15일
·
0개의 댓글
·

HackerRank - Pangram

HackerRank 사이트에서 풀게된 pangram 문제 풀이. 문제가 영어라 요약하면 문장 한 줄이 input된다. 입력된 문장에 알파벳 a~z까지 빠짐없이 들어가면 "pangram"을 출력. 입력된 문장에 알파벳 a~z 중 하나라도 빠졌으면 "not pangram"을 출력. 문제 자체는 쉽다. str변수에 문장을 입력받았다고 치면 다음 코드처럼 구현하면 답이 나온다. 이정도 설명하면 더 작성 안해도 알아볼텐데, 처음에 내가 문제를 보고 딱 떠오르는 방법이 이 방식이었다. 근데 아무리 생각해도 이렇게 알고리즘을 구현하는 게 의미가 있나 싶어서 다른 사람의 풀이를 뒤져봤다. 그리고 다른 사람 풀이를 본 덕분에 모르고 있던 기능을 하나 배우게 되었다. 아래는 훨씬 간결한 정답 코드다. 이 코드로부터 내 알고리즘 구현 능력과 4가지 다른 점을 배웠다. 우선 set과 HashSet에 대한 개념. java에서 주로 사용하는 list와 비슷한 기능을 수행하는 것

2023년 5월 20일
·
0개의 댓글
·
post-thumbnail

4. 컬렉션 내장 메서드 활용 - 추가, 크기, 삭제

1. List 1) add 컬렉션의 List는 일반적인 배열과는 다르게 add 메서드를 이용하여 요소를 추가해주어야 합니다. 2) size() List의 <

2023년 5월 5일
·
0개의 댓글
·
post-thumbnail

Java - HashSet은 정렬되지 않는다. 근데 뭐지?

CS스터디에서 자료구조를 공부했고, HashSet은 정렬되지 않는 것으로 배웠다. 근데 데이터에 따라 종종 정렬되어 저장되는 것처럼 보이는 경우를 보게 되었다. HashSet에 데이터가 어떻게 저장되는지 궁금하여 이 글을 작성한다 HashSet을 뜯어보자 내부 구조 우선 HashSet은 내부에서 HashMap을 사용하여 데이터를 저장한다. <img src="https://velog.velcdn.com/images/cxxxtxxyxx/post/67f1b8d8-e8bb-4718-9573-b7736766ae28/image.png"

2023년 5월 1일
·
0개의 댓글
·

HashMap, HashSet 사용법, 차이

HashMap과 HashSet은 Java에서 두 가지 중요한 데이터 구조입니다. > HashMap: HashMap은 키-값 쌍을 저장하는 데이터 구조입니다. 각 버킷은 키-값 쌍의 연결된 목록인 버킷 배열을 사용하여 구현됩니다. 키는 배열에 인덱싱하는 데 사용되며 값은 해당 연결 목록에 저장됩니다. HashMap은 요소를 추가, 제거 및 검색하기 위한 일정한 시간 복잡도를 제공합니다(좋은 해시 함수가 사용된다고 가정). > HashSet: HashSet은 요소 집합(즉, 키-값 쌍이 아닌 값)을 저장하는 데이터 구조입니다. 값이 키이고 HashMap의 값이 모두 동일한 객체(예: null)로 설정되는 HashMap을 사용하여 구현됩니다. 이는 요소를 추가, 제거 및 검색하기 위한 일정한 시간 복잡성을 허용합니다(좋은 해시 함수가 사용된다고 가정). > 주목해야 할 한 가지 중요한 점은 HashSet이 중복을 허용하지 않는다는 것입니다. HashSet에 요소를 추가할 때 먼저

2023년 4월 23일
·
0개의 댓글
·

자바 Hash 자료구조 동작과정

HashMap 동작과정 해시 테이블은 key-value로 데이터를 저장하는 자료구조로 데이터를 빠르게 검색할 수 있는 자료구조이다. 해시 테이블은 내부적으로 배열(버킷)을 사용하여 데이터를 저장한다. 해시테이블의 각각의 key 값에 해시함수를 적용해 배열의 고유한 index를 생성하고 이 index를 활용해서 값을 저장하거나 검색한다. 여기서 실제 값이 저장되는 장소를 버킷이라고 한다. 해시테이블은 해시함수를 사용하여 데이터의 키를 해시값으로 변환한다. 변환한 해시값을 버킷 인덱스로 사용하여 해당 버킷에 데이터를 저장한다. 해시함수가 리턴한 해시값은 버킷 인덱스를 결정하는데 사용된다. 버킷 인덱스는 데이터가 실제로 저장되는 위치를 가리치는데 이 과정을 해싱이라고 한다. 지금까지 해시테이블에 객체를 저장하는 방법을 잘못 알고 있었다. Member member = new Member(”th”) 라는 객체를 해시테이블에 저장할 때, `member.hash

2023년 4월 19일
·
0개의 댓글
·

Set 을 Array 로 Array를 Set 으로

Array 값 내의 중복값을 제거하기 위해 다양한 방법이 있겠지만, Set 으로 변환하여 중복값을 제거한 후 다시 배열로 변환받는 방법을 사용할 수 있다.

2023년 3월 27일
·
0개의 댓글
·
post-thumbnail

컬렉션 프레임워크

컬렉션 프레임워크는 간단히 말해, 리스트, 스택, 큐, 트리 등의 에 정렬, 탐색 등의 을 구조화해 놓은 프레임워크이다. 여러 개의 데이터 묶음 자료를 효과적으로 처리하기 위해 구조화된 클래스 또는 인터페이스의 모음 1. List 인터페이스 리스트와 배열의 차이점 배열 : 저장공간의 크기가 (固定的) 리스트 : 저장공간의 크기가 (可變的) 🛠 List의 주요 메소드 a. add(E element) : 매개변수로 입력된 원소를 마지막에 추가 b. add(int index, E element) : index위치에 입력된 원소 추가 c. addAll(Collection c) : 입력된 컬렉션 전체를 마지막에 추가 d. addAll(int index, Collect

2023년 3월 24일
·
0개의 댓글
·
post-thumbnail

TreeSet / TreeMap / HashSet / HashMap

Hash 사용시기 : String타입의 데이터를 저장하고 관리할 때 사용 HashMap 클래스 키와 값을 해시 함수를 사용하여 매핑하여 데이터를 저장하는 자료구조입니다. 해시 함수를 사용하기 때문에 키를 빠르게 검색할 수 있습니다. 키와 값의 순서가 보장되지 않습니다. 키와 값 모두 null을 허용합니다. 키를 빠르게 검색하지만, 데이터의 저장 순서와 검색 에 사용됩니다. HashSet 클래스 해시 함수를 사용하여 되지 않은 데이터를 저장하는 자료구조입니다. 해시 함수를 사용하기 때문에 데이터를 빠르게 검색할 수 있습니다. 저장된 데이터의 순서가 보장되지 않습니다. null을 하나만 저장할 수 있습니다. 중복되지 않은 데이터를 저장하면서 데이터를 빠르게 검색할 때 사용합니다

2023년 3월 23일
·
0개의 댓글
·