알고리즘/백준
HashSet
이채림
2024. 11. 7. 19:15
Java의 HashSet은 중복 없는 데이터를 저장할 때 유용한 자료구조이다.
HashSet이란?
HashSet은 집합(Set) 자료구조의 한 종류로, Java Collection Framework에 속한다.
- 데이터 중복 허용 안함
- 저장 순서 유지 안됨
- 빠른 조회, 추가, 삭제 | 평균적으로 O(1)
사용법
- add() : 요소 추가
- remove() : 요소 제거
- contains() : 요소 존재 확인
- isEmpty() : 비어있는지 확인
- size() : 현재 요소 개수 반환
- clear() : 모든 요소 제거
HashSet과 HashMap의 차이점
1. 데이터 저장 방식
- HashSet : 단일 값 저장
- HashMap : 키-값 쌍 저장 (키는 중복 허용 X, 값은 중복 가능)
2. 사용 목적
- HashSet : 중복 없는 데이터의 모음이 필요할 때 사용
- HashMap : 키와 값의 매핑이 필요할 때 사용
공통점 : 내부적으로 해싱을 사용하여 데이터를 빠르게 관리한다.
https://www.acmicpc.net/problem/11723
import java.io.*;
import java.util.HashSet;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int M = Integer.parseInt(br.readLine());
HashSet<Integer> set = new HashSet<>();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < M; i++) {
String str = br.readLine();
String[] parts = str.split(" ");
String command = parts[0];
if (command.equals("add")) {
set.add(Integer.parseInt(parts[1]));
} else if (command.equals("remove")) {
set.remove(Integer.parseInt(parts[1]));
} else if (command.equals("check")) {
if (set.contains(Integer.parseInt(parts[1]))) {
sb.append("1\n");
} else {
sb.append("0\n");
}
} else if (command.equals("toggle")) {
int num = Integer.parseInt(parts[1]);
if (set.contains(num)) {
set.remove(num);
} else {
set.add(num);
}
} else if (command.equals("all")) {
set.clear();
for (int j = 1; j <= 20; j++) {
set.add(j);
}
} else if (command.equals("empty")) {
set.clear();
}
}
System.out.print(sb);
}
}