Java
[백준 2179] 비슷한 단어 (JAVA)
iheeeee6-6
2023. 4. 28. 12:37
728x90
https://www.acmicpc.net/problem/2179
2179번: 비슷한 단어
첫째 줄에 S를, 둘째 줄에 T를 출력한다. 단, 이 두 단어는 서로 달라야 한다. 즉, 가장 비슷한 두 단어를 구할 때 같은 단어는 제외하는 것이다.
www.acmicpc.net
ArrayList에 넣어서 비교하면 되는 문제였다.
포문에서 char배열로 변환한 후 비교했었는데 이러면 메모리 초과가 발생되었다 ..
charAt으로 해당 인덱스로 잘라서 비교함으로써 해결~~~
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
ArrayList<String> list = new ArrayList<>();
for(int i=0;i<n;i++) {
String s= br.readLine();
if(!list.contains(s))
list.add(s);
}
int resultStr1=0;
int resultStr2=0;
int maxCount=0;
for(int i=0;i<n;i++) {
String str1 = list.get(i);
for(int j=i+1;j<n;j++) {
int count=0;
String str2=list.get(j);
int size=Math.min(str1.length(),str2.length());
for(int z=0;z<size;z++) {
if(str1.charAt(z)==str2.charAt(z)) count++;
else break;
}
if(count>maxCount) {
resultStr1=i;
resultStr2=j;
maxCount=count;
}
}
}
System.out.println(list.get(resultStr1));
System.out.println(list.get(resultStr2));
}
}