🌞Algorithm/🔥Baekjoon
[Baekjoon] 8892_팰린드롬
뿌야._.
2024. 1. 31. 16:39
문제(출처: https://www.acmicpc.net/problem/8892)
< 팰린드롬 >
문제 풀이
입력받은 모든 단어를 2개씩 합쳐보면서 팰린드롬 검사를 한다.
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class _8892_ { // 팰린드롬
static String arr[];
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int t = Integer.parseInt(bf.readLine());
boolean check;
for (int i = 0; i < t; i++) {
int k = Integer.parseInt(bf.readLine());
check = false;
arr = new String[k];
for (int j = 0; j < k; j++) {
arr[j] = bf.readLine();
}
for (int j = 0; j < k; j++) {
for (int l = 0; l < k; l++) {
if (j == l) {
continue;
}
if (!palindrome(arr[j] + arr[l])) {
check = true;
bw.write(arr[j] + arr[l] + "\n");
break;
}
}
if(check) {
break;
}
}
if (!check) {
bw.write(0 + "\n");
}
}
bw.flush();
}
private static boolean palindrome(String str) {
boolean flag = false;
for (int i = 0; i < str.length() / 2; i++) {
if (str.charAt(i) != str.charAt(str.length() - 1 - i)) {
flag = true;
break;
}
}
return flag;
}
}
변수)
t : 테스트 케이스 수
check : 팰린드롬 여부
k : 단어의 수
arr : 단어 저장 배열
테스트 케이스 수를 입력받은 후 테스트 케이스 수만큼 단어의 수와 단어를 입력받는다.
이중 for문을 사용하여 단어를 2개씩 조합하여 전부 다 팰린드롬 검사를 한다. 팰린드롬이라면 팰린드롬을 출력하고 종료한다. 만약 팰린드롬을 만들 수 없다면 0을 출력한다.
palindrome (단어)
단어의 맨 앞과 맨 뒤에서부터 문자가 일치하는지 확인 후 문자가 다르면 팰린드롬이 아니므로 바로 종료한다. 끝까지 일치한다면 팰린드롬이므로 false를 반환한다.