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 로 카운트한 결과 비교
'JAVA > Coding Test' 카테고리의 다른 글
[JAVA] 백준 10816 숫자 카드 2_집합과맵 (0) | 2023.03.03 |
---|---|
[JAVA] 백준 1620 나는야 포켓몬 마스터 이다솜_집합과맵 (0) | 2023.03.03 |
[JAVA] 백준 10815 숫자카드_집합과맵 (0) | 2023.03.01 |
[JAVA] 백준 10870 피보나치 수 5_ 재귀함수 (0) | 2023.03.01 |
[JAVA] 백준 10872 팩토리얼_재귀함수 (0) | 2023.02.28 |