JAVA/Coding Test

[JAVA] 백준 14425 문자열 집합

오늘도개발 2023. 3. 2. 14:06

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

 

14425번: 문자열 집합

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

www.acmicpc.net

 

접근 :

 

- 검색할 문자열의 갯수 n 을 입력 받음

 

 - 검색 대상의 문자열 갯수 m 을 입력 받음

 

- n 개의 문자열을 먼저 집합 s 에 저장

 

- 이후 들어오는 m 개의 문자열에 대해서 집합 s 에 포함되어 있는지 확인

 

- 완벽하게 동일한 문자열이 있는 경우 갯수를 증가 시키므로 HashMap 을 사용해서 갯수를 카운트 한다.

 

코드 구현:

 

import java.io.*;
import java.util.HashMap;

public class Main {

	public static void main(String[] args) throws IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		// n, m 입력
		String[] inputs = br.readLine().split(" ");
		int n = Integer.parseInt(inputs[0]);
		int m = Integer.parseInt(inputs[1]);

		HashMap<String, Integer> s = new HashMap<>();
		int result = 0;
		String target = "";

		// 집합 s에 해당하는 n 개의 문자열을 key로 저장 value는 해당 key가 검색된 횟수
		for (int i = 0; i < n; i++) {
			s.put(br.readLine(), 0);
		}

		for (int j = 0; j < m; j++) {
			target = br.readLine();
			
			//해당 문자열이 map의 key로 있으면 result 1증가
			if (s.containsKey(target)) {
				s.put(target, s.get(target) + 1);
				result++;
			}
		}
		
		System.out.println(result);
		br.close();
	}
}

 

 

* 번외 :hashmap을 사용한 코드와, 각각을 문자열 배열로 받은 후 for 문을 돌리면서 equals 로 카운트한 결과 비교