문제(출처: 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를 반환한다.

'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글
[Baekjoon] 1167_트리의 지름 (1) | 2024.02.02 |
---|---|
[Baekjoon] 11967_불켜기 (0) | 2024.02.01 |
[Baekjoon] 19637_IF문 좀 대신 써줘 (1) | 2024.01.30 |
[Baekjoon] 10431_줄세우기 (1) | 2024.01.29 |
[Baekjoon] 2865_나는 위대한 슈퍼스타K (0) | 2024.01.26 |