백준 2607 비슷한 단어(구현)

choiyongheon·2021년 8월 12일

일반적 구현문제이지만, 생각해야할 부분이 조금 있어서 오래걸렸다.
비슷한 단어는 한글자를 빼거나 더하거나 수정해서 기준 문자열과 같아지면 되기 때문에 주어지는 문자열은 기준 문자열과 한글자 차이여야 한다.

주어진 문자열 + 1 = 기준 문자열 -> 두 단어의 같은 글자 = 주어진 문자열
주어진 문자열 - 1 = 기준 문자열 -> 두 단어의 같은 글자 = 기준 문자열
주어진 문자열 = 기준 문자열 -> 두 단어의 같은 글자 = 기준 문자열 - 1

의 조건이 성립하게 된다.

import java.util.*;

public class Main {
    public static void main (String[]args) {        //같으면 안댐. 비슷한거(한글자 더하거나 빼거나, 교체하거나) 즉, 기준단어 글자수 +-1까지만 허용
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        String input = scanner.next();
        int[] alpha = new int[26];

        for(int i=0; i<input.length(); i++){
            alpha[input.charAt(i) - 'A']++;
        }

        int cnt = 0;

        for(int test=1; test<n; test++){
            String out = scanner.next();
            int[] beta = alpha.clone();
            int same = 0;

            for(int i=0; i<out.length(); i++){
                if(beta[out.charAt(i) - 'A'] > 0){
                    same++;
                    beta[out.charAt(i) - 'A']--;
                }
            }

            if(out.length() == input.length()-1 && same == out.length())
                cnt++;
            else if(out.length() == input.length()){
                if(same == input.length()-1 || same == input.length())
                    cnt++;
            }
            else if(out.length() == input.length()+1){
                if(same == input.length())
                    cnt++;
            }
        }
        System.out.print(cnt);
    }
}

profile
주니어 백엔드 개발자

0개의 댓글