코딩테스트/자바 문제풀이

[자료구조2] 백준 14425 문자열 집합

승요나라 2024. 7. 21. 23:56

14425번: 문자열 집합

https://www.acmicpc.net/problem/14425

 

# 코드

import java.io.*;
import java.util.HashSet;
import java.util.Set;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        // 빠른 입출력을 위한 BufferedReader 와 BufferedWriter
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        // N, M
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        long n = Long.parseLong(st.nextToken());
        long m = Long.parseLong(st.nextToken());

        // 집합 S
        Set<String> s = new HashSet<>();
        for (long i = 0; i < n; i++) {
            s.add(br.readLine());
        }

        long count = 0;

        // 집합에 포함된 데이터의 개수 세기
        for (long j = 0; j < m; j++) {
            String input = br.readLine();

            if (s.contains(input)) {
                count++;
            }
        }

        bw.write(String.valueOf(count));

        // Reader 버퍼 닫기
        br.close();

        // Writer 버퍼 비운 뒤 닫기
        bw.flush();
        bw.close();
    }
}
  • HashSetSet 인터페이스의 구현 클래스로, '집합'을 뜻하며 순서가 없고 중복 값을 허용하지 않는다는 특징이 있다.
  • 순서를 유지하고 싶다면 LinkedHashSet 클래스를 사용하면 된다.

 

다음은 HashSet 의 주요 메소드이다.

  • add() : 데이터 삽입
  • remove() : 데이터 삭제
  • contains() : 값 포함 유무
  • clear() : 전체 데이터 삭제
  • isEmpty() : 값 존재 유무
  • size() : set 데이터 크기