문제 내용은 입력으로 사람 수와 사람 이름을 받은 뒤, 둘을 연결할 수 있는 경우의 수를 출력해줘야 하는데어떤 사람의 끝 글자가 다른 사람의 시작 글자가 되면 연결이 가능한데, 글자 수 제한이 있는 게 아니기 때문에 해당 부분을 주의하고 중복으로 쌍을 세지 않도록 주의하자
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int count = Integer.parseInt(br.readLine());
String[] arr = new String[count];
for (int i = 0; i < count; i++) {
arr[i] = br.readLine();
}
int ans = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (i != j) {
for (int k = 1; k <= Math.min(arr[i].length(), arr[j].length()); k++) {
if (arr[i].endsWith(arr[j].substring(0, k)) || arr[j].endsWith(
arr[i].substring(0, k))) {
ans++;
break;
}
}
}
}
}
System.out.println(ans);
}
}
문제를 풀어보자면 배열에 입력받은 사람을 넣어준 뒤, 하나씩 비교하면서 한 사람의 문자열 뒷 부분이 다른 사람의 문자열 시작부분으로 이어지는지 한 글자씩 늘려가며 비교해보고, 양방향으로 비교해서 있다면 숫자 늘려주고 break; 쳐주는 식으로 하나씩 비교해준 후 for문을 모두 돌린 뒤 이름이 연결되는 쌍 갯수를 출력해주면 끝이다
Leave a Reply