백준 2607 - 비슷한 단어

백준 2607 - 비슷한 단어

https://www.acmicpc.net/problem/2607

★ 풀이

문제를 잘 읽고 분류를 제대로 해야 쉽게 풀 수 있는 문제

결국 문제에서 말하는 비슷한 단어라는 것은 크게 1+3가지로 분류할 수 있다.

길이가 같고 구성이 같은 단어

구성이 같지 않은 단어( 길이 차이 최대 1 )

삭제 를 통해 비슷한 단어를 만들 수 있는 단어(오차) : 목표 단어 길이 + 1 && 목표 단어 구성요소 + 0

를 통해 비슷한 단어를 만들 수 있는 단어(오차) : 목표 단어 길이 + 1 && 목표 단어 구성요소 + 0 변경 을 통해 비슷한 단어를 만들 수 있는 단어(오차) : 목표 단어 길이 + 0 && 목표 단어 구성요소 - 1

을 통해 비슷한 단어를 만들 수 있는 단어(오차) : 목표 단어 길이 + 0 && 목표 단어 구성요소 - 1 추가를 통해 비슷한 단어를 만들 수 있는 단어(오차) : 목표 단어 길이 - 1 && 목표 단어 구성요소 + 0

쉽게 그림으로 간단한 예시를 보이자면

★ 소스 코드

import java.io.*; import java.util.*; public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); public static void main(String[] args) throws IOException { int n = Integer.parseInt(br.readLine()); String arr[] = new String[n]; for(int i = 0; i 0) sameCnt++; } if(sameCnt == arr[0].length() && arr[0].length() == arr[t].length()) { // 구성이 같은 경우 ans++; }else { // 구성이 다른경우 if(arr[0].length() == arr[t].length() - 1) { // 삭제 if(sameCnt == arr[0].length()) ans++; }else if(arr[0].length() == arr[t].length()) { // 변경 if(sameCnt == arr[0].length() - 1) ans++; }else if(arr[0].length() == arr[t].length() + 1) { // 추가 if(sameCnt == arr[0].length() - 1) ans++; } } } System.out.println(ans); } }

from http://sweet-smell.tistory.com/128 by ccl(A) rewrite - 2021-12-03 02:28:19