반응형
문자열과 정렬 관련 문제입니다.
1.String 배열을 이용한 풀이
배열을 두 개를 이용해서 반복문을 이용해 똑같은 단어가 있는지 확인합니다.
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());
String[] s_set = new String[n];
String[] checker = new String[m];
for (int i = 0; i < n; i++) {
s_set[i] = br.readLine();
}
for (int i = 0; i < m; i++) {
checker[i] = br.readLine();
}
int cnt = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if(s_set[i].equals(checker[j])) {
cnt++;
}
}
}
System.out.println(cnt);
}
}
2. Hashmap을 이용한 풀이
Hashmap에 문자열을 넣고 hashMap.containskey를 이용해서 입력 받는 문자열을 키로 가지고 있는지 확인하고 있다면 cnt를 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());
HashMap<String,Integer> hashMap = new HashMap<>();
for (int i = 0; i < N; i++) {
String s = br.readLine();
hashMap.put(s,0);
}
int cnt = 0;
for (int i = 0; i < M; i++) {
String check = br.readLine();
if(hashMap.containsKey(check)) {
cnt++;
}
}
System.out.println(cnt);
}
}
위에 것이 Hashmap 풀이
아래 것이 문자열 배열 풀이
보시다시피 Hashmap을 이용한 풀이가 훨씬 빠릅니다!
반응형
'백준 > Hash & Tree' 카테고리의 다른 글
백준 20291 자바 (0) | 2022.08.24 |
---|---|
백준 10867 자바 (0) | 2022.08.23 |
백준 25192 자바 (0) | 2022.08.23 |
백준 1620 자바 (0) | 2022.08.20 |
백준 1764 자바 (0) | 2022.08.19 |