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

choiyongheon·2021년 8월 12일
1

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

주어진 문자열 + 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개의 댓글

관련 채용 정보