on
백준 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