728x90
https://www.acmicpc.net/problem/2607
메모리: 14,132 KB , 시간: 100 ms
사용 알고리즘: 구현, 문자열
728x90
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
// 기준이 되는 문자열
char[] first = br.readLine().toCharArray();
// 기준 문자열 알파벳 개수 저장
int[] firstCount = new int['Z' - 'A' + 1];
for (int i = 0; i < first.length; i++) {
firstCount[first[i] - 'A']++;
}
int result = 0;
char[] compare; int[] count; int diff;
for (int i = 1; i < n; i++) {
count = firstCount.clone();
// 다른 단어 개수
diff = 0;
// 비교 문자열
compare = br.readLine().toCharArray();
// 문자열 길이가 2 이상 차이나면 안됨
if(Math.abs(first.length - compare.length) >= 2) continue;
for (int j = 0; j < compare.length; j++) {
// 현재 단어가 first에 포함되어 있음
if(count[compare[j] - 'A'] > 0) count[compare[j] - 'A']--;
else diff++;
}
// 기준 문자열이 더 길다면, 다른 단어가 있으면 안됨
if(compare.length < first.length) {
if(diff == 0) result++;
} else { // 문자열 길이가 같거나, 비교 문자열이 더 길다면
if(diff <= 1) result++;
}
}
System.out.println(result);
}
}
728x90
'Problem Solving > BOJ' 카테고리의 다른 글
[백준, BOJ 7795] 먹을 것인가 먹힐 것인가 (java) (0) | 2024.08.31 |
---|---|
[백준, BOJ 10773] 제로 (java) (0) | 2024.08.30 |
[백준, BOJ 13414] 수강신청 (java) (0) | 2024.08.20 |
[백준, BOJ 14950] 정복자 (java) (0) | 2024.07.29 |
[백준, BOJ 9024] 두 수의 합 (java) (0) | 2024.07.26 |