https://www.acmicpc.net/problem/2607
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
public class Main{
public static HashMap<Character, Integer> map1, map2;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n= Integer.parseInt(br.readLine());
String word = br.readLine();
int answer=0;
map1 = new HashMap<>();
map2 = new HashMap<>();
init(map1);
for(int i=0; i<word.length(); i++){
char ch = word.charAt(i);
map1.replace(ch, map1.get(ch) + 1);
}
for(int i=0; i<n-1; i++){
init(map2);
String word2 = br.readLine();
for(int j=0; j<word2.length(); j++){
char ch = word2.charAt(j);
map2.replace(ch, map2.get(ch) + 1);
}
if(isSimilar(map2)) answer++;
}
System.out.println(answer);
}
private static void init(HashMap<Character, Integer> hm){
for(char ch='A';ch<='Z';ch++) hm.put(ch, 0);
}
public static boolean isSimilar(HashMap<Character, Integer> map2){
// 문자열 알파벳 개수 차이가 2이하
// 문자열의 길이 차이가 1 이하
int a, b, diff=0, word1len =0, word2len=0;
for(char ch='A'; ch<='Z'; ch++){
word1len+= (a = map1.get(ch));
word2len+= (b = map2.get(ch));
diff+=Math.abs(a-b);
}
return diff<=2 && Math.abs(word1len-word2len) <=1;
}
}
'ALGORITHM' 카테고리의 다른 글
[JAVA] 백준 10828번- 스택 (0) | 2022.10.04 |
---|---|
[JAVA] 백준 1388번- 바닥 장식 (0) | 2022.10.03 |
[JAVA] 알고리즘 : DFS- 피자 배달 거리 (0) | 2022.09.30 |
[JAVA] 알고리즘 : DFS, BFS- 섬나라 아일랜드 (0) | 2022.09.30 |
[JAVA] 알고리즘 : DFS- 미로 탐색 (0) | 2022.09.29 |