> 개발-IT-인터넷/> JAVA

[해커랭크(HackerRank) JAVA 풀이] - Java Hashset

jini:) 2023. 10. 11. 10:45
728x90
반응형
해커랭크 - https://www.hackerrank.com/
Prepare > Java > Data Structures > Java Hashset
 

HackerRank

HackerRank is the market-leading technical assessment and remote interview solution for hiring developers. Learn how to hire technical talent from anywhere!

www.hackerrank.com

 

컴퓨터 과학에서 집합은 특정 순서 없이 특정 값을 저장할 수 있고 반복되는 값이 없는 추상 데이터 유형입니다(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
반응형