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));
	}

}

'Java' 카테고리의 다른 글

[백준 2668] 숫자고르기 (JAVA)  (0) 2023.04.30
[백준 4179] 불! (JAVA)  (0) 2023.04.29
[백준 1522] 문자열 교환 (JAVA)  (0) 2023.04.28
[백준 1976] 여행가자 (JAVA)  (0) 2023.04.27
[백준 24337] 가희와 탑 (JAVA)  (0) 2023.04.27