본문 바로가기
백준

[백준] 14425번 : 문자열 집합 – JAVA [자바]

by Hongwoo 2022. 4. 26.
반응형

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

 

14425번: 문자열 집합

첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다.  다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어

www.acmicpc.net

 


  • 문제

 

 


  • 문제 풀이

백준 14425번 문자열 집합은 실버 3 난이도의 문자열 및 맵 문제이다. 이 문제에서는 n개의 문자열이 주어지고 그다음에 주어지는 m개의 문자열 중에 몇 개가 n개의 문자열과 겹치는지를 출력만 해주면 되는 문제이다. 이 문제는 HashMap을 이용해서 풀겠다. HashMap을 잘 모르면 밑에 있는 링크를 참고하면 되겠다.

 

https://propercoding.tistory.com/89

 

[자료구조] 해시맵(HashMap)

목차 HashMap 이란? 우선 Map은 키와 값으로 구성된 Entry 객체를 저장하는 구조를 가지고 있는 자료구조이다. 영어 사전을 예로 들어보겠다. person은 사람, baseball은 야구란 뜻을 가지고 있다. 따라서

propercoding.tistory.com

 

우선 <String, Integer> 형태인 HashMap을 만든다. 키는 문제에서 주어지는 문자열을 넣을 거고 값은 사실 필요 없어서 맵에 추가할 때 0으로 넣겠다.

 

우선 n개의 문자열들을 모조리 맵에 추가한다. 그리고 m개의 문자열들을 입력받을 때 containsKey 함수를 이용해서 맵에 그 문자열이 있으면 카운트를 1씩 증가시킨다. 그리고 마지막에 카운트를 출력해주면 된다.

 


  • 코드

 

import java.io.*;
import java.util.*;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());
        Map<String, Integer> map = new HashMap<>();
        for (int i = 0; i < n; i++) {
            map.put(br.readLine(), 0);
        }
        int count = 0;
        for (int i = 0; i < m; i++) {
            if (map.containsKey(br.readLine())) count++;
        }
        System.out.print(count);
    }
}

 


  • 후기

HashMap을 이용하면 간단히 풀 수 있는 문제였다. 

 

 

반응형

댓글