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 |