728x90
반응형
해커랭크 - https://www.hackerrank.com/
Prepare > Java > Data Structures > Java Hashset
컴퓨터 과학에서 집합은 특정 순서 없이 특정 값을 저장할 수 있고 반복되는 값이 없는 추상 데이터 유형입니다(Wikipedia). {1, 2, 3}은 집합의 예이지만 {1, 2, 3}은 집합이 아닙니다. 오늘은 이 문제를 풀면서 자바에서 집합을 사용하는 방법을 배우게 될 것입니다.
n 쌍의 문자열이 제공됩니다. a = c 및 b = d인 경우 두 쌍 {a, b} 및 {c, d}는 동일합니다. 그것은 또한 (a, b)가 (b, a)와 같지 않다는 것을 의미합니다. 각 쌍을 입력으로 받은 후 현재 가지고 있는 고유한 쌍의 수를 인쇄해야 합니다.
Input Format
첫 번째 줄에는 쌍의 수를 나타내는 정수 T가 있습니다. 다음 T 라인 각각에는 단일 공백으로 구분된 두 개의 문자열이 포함됩니다.
Constraints
- 1 ≤ T ≤ 100000
- 각 문자열의 길이는 최대 5이며 소문자로만 구성됩니다.
Output Format
T 라인을 인쇄합니다. i번째 줄에 i번째 쌍을 입력으로 받은 후 고유한 쌍의 수를 인쇄하십시오.
Sample Input
5
john tom
john mary
john tom
mary anna
mary anna
Sample Output
1
2
2
3
3
Explanation
- 첫 번째 입력을 받은 후에는 하나의 쌍만 갖게 됩니다. (john,tom)
- 두 번째 입력을 받으면 (john, tom) 및 (john, mary)의 두 쌍이 있습니다.
- 세 번째 입력을 받은 후에도 여전히 두 개의 고유한 쌍이 있습니다.
- 네 번째 입력을 받으면 (john,tom), (john, mary) 및 (mary, anna)의 세 가지 고유한 쌍이 있습니다.
- 다섯 번째 입력을 받은 후에도 여전히 세 개의 고유한 쌍이 있습니다.
Code
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int t = s.nextInt();
String [] pair_left = new String[t];
String [] pair_right = new String[t];
for (int i = 0; i < t; i++) {
pair_left[i] = s.next();
pair_right[i] = s.next();
}
//Write your code here
Set<String> pairs = new HashSet<String>();
for(int i=0; i<t; i++) {
pairs.add(pair_left[i]+" "+pair_right[i]);
System.out.println(pairs.size());
}
}
}
HashSet
Set 인터페이스를 구현한 컬렉션 클래스 중 하나.
HashSet 특징
- 고유한 요소 저장 : 중복 요소를 허용하지 않음. 동일한 요소를 두 번 이상 추가하려고 시도하면 두 번째 및 이후의 시도는 무시.
- 순서가 없음 : 요소들을 어떤 특정 순서로 저장하지 않음. 따라서 요소들을 추가한 순서대로 반복되지 않음.
- 성능 : 해시 테이블을 기반으로 구현되어 있으며 검색, 추가 및 삭제 연산에 O(1)의 평균 시간 복잡도를 가지므로 대용량의 데이터 집합에서도 효율적으로 동작.
- Null 요소 허용 : 하나의 null 요소를 저장할 수 있음.
- 동기화 : 스레드 안전하지 않음. 여러 스레드가 동시에 접근할 때 동기화를 제공하지 않으므로 멀티스레드 환경에서 사용하려면 명시적으로 동기화 처리가 필요.
개인 공부를 위한 포스팅입니다.
모든 번역, 코드는 완벽하지 않을 수 있습니다.
728x90
반응형
'> 개발-IT-인터넷 > > JAVA' 카테고리의 다른 글
[해커랭크(HackerRank) JAVA 풀이] - Java Comparator (0) | 2023.10.13 |
---|---|
[해커랭크(HackerRank) JAVA 풀이] - Java Generics (0) | 2023.10.12 |
[해커랭크(HackerRank) JAVA 풀이] - Java Stack (0) | 2023.10.10 |
자바 List와 Map의 차이점 (1) | 2023.10.06 |
[해커랭크(HackerRank) JAVA 풀이] - Java Map (1) | 2023.10.06 |