문제 내용이 약간 이해가 힘들 수 있는데, 요약해보자면 처음 입력으로 들어올 단어 갯수를 받고 그 다음 입력으로는 단어를 받게 되는데 위 단어들 중 각 단어를 뒤집었을 때 존재하는 값을 찾고, 해당 값의 길이와 가운데 글자를 출력해주면 되는 문제인데
주의할 점은 입력 1에서는 las를 뒤집으면 sal이 되는데 입력에서 발견할 수 있지만, 입력2의 경우에는 뒤집도 같은 문자열이 보이지 않을 텐데, kisik은 반대로 뒤집어도 kisik이기 때문에 풀이 과정에서 이걸 놓치지 않도록 주의해줘야 한다.
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 IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int count = Integer.parseInt(br.readLine());
ArrayList<String> list = new ArrayList<>();
for (int i = 0; i < count; i++) {
list.add(br.readLine());
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < list.size(); i++) {
sb = new StringBuilder(list.get(i));
String reverseString = sb.reverse().toString();
if (list.contains(reverseString)) {
int mid = reverseString.length() / 2;
System.out.println(reverseString.length() + " " + reverseString.charAt(mid));
break;
}
}
}
}
문제를 풀어보자면 List를 선언하고 입력으로 받은 문자열을 모두 넣어준 뒤, for문으로 list 크기만큼 돌리면서 문자열을 꺼낼 때마다 뒤집어서 List 안에 뒤집은 문자열이 있는지 확인하고, 만약 있다면 바로 문자열 /2 로 가운데 값을 구한 후, 문자열 길이와 함께 양식에 맞춰서 출력시키면 끝이 난다.
Leave a Reply