문제 바로가기 > [Gold IV]백준 2179번:비슷한 단어
문제에서 요구하는 것은 주어진 문자열 중에서 가장 비슷한 두 단어를 찾는 것입니다. 단, 순서대로 제일 앞쪽에 있는 단어인 경우를 출력해야합니다.
여러 문자열을 입력 받아야 하고, 입력된 문자열들 간에 중복이 있을 수 있기 때문에 중복을 허용하지 않고 문자열을 저장합니다. 이렇게 하면 후에 중복된 문자열을 추가하지 않으면서도 입력된 순서대로 문자열을 유지할 수 있습니다.
Java - ArrayList.contains()
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
List<String> word = new ArrayList<>();
int N = Integer.parseInt(br.readLine());
for (int i = 0; i < N; i++) {
String str = br.readLine();
if (!word.contains(str))
word.add(str);
}
int max = Integer.MIN_VALUE;
int wordA = 0, wordB = 0;
for (int i = 0; i < word.size() - 1; i++) {
String str1 = word.get(i);
for (int j = i + 1; j < word.size(); j++) {
int count = 0;
String str2 = word.get(j);
int len = Math.min(str1.length(), str2.length());
for (int l = 0; l < len; l++) {
if (str1.charAt(l) != str2.charAt(l))
break;
count++;
}
if (max < count) {
max = count;
wordA = i;
wordB = j;
}
}
}
System.out.println(word.get(wordA));
System.out.println(word.get(wordB));
}
}