🌞Algorithm/🔥Baekjoon

[Baekjoon] 8892_팰린드롬

뿌야._. 2024. 1. 31. 16:39

Silver V

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