[백준, BOJ 15927] 회문은 회문아니야!! (java)
Problem Solving/BOJ

[백준, BOJ 15927] 회문은 회문아니야!! (java)

728x90

https://www.acmicpc.net/problem/15927

 

15927번: 회문은 회문아니야!!

팰린드롬이란 앞으로 읽으나 뒤로 읽으나 같은 문자열을 말한다. 팰린드롬의 예시로 POP, ABBA 등이 있고, 팰린드롬이 아닌 것의 예시로 ABCA, PALINDROME 등이 있다. 같은 의미를 가지는 여러 단어들을

www.acmicpc.net

728x90

메모리: 19,460 KB , 시간: 216 ms

사용 알고리즘: 애드 혹, 문자열

 

내 생각

팬린드롬은 모든 문자열이 같지 않은 이상 문자 하나만 빠져도 팰린드롬이 아니라는 것만 알고 있으면 쉽게 풀 수 있는 문제였다...

이 생각을 못해서 뻘 짓 엄청 함.

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws Exception{

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        /*
        주어진 문자열이 팰린드롬이 아닌 경우, 답은 '문자열 길이'
        주어진 문자열이 모두 같은 문자로 이루어진 경우 답은 '-1'
        팰린드롬이지만, 모두 같은 문자열로 이루어지진 않은 경우, 문자 하나만 제외해도 팰린드롬은 깨짐. 답은 '문자열 길이 - 1'
         */

        // 하나의 문자열 입력
        char[] string = br.readLine().toCharArray();

        // 팰린드롬인지 확인
        int result = -1;
        int s = 0, e = string.length - 1;
        while(s <= e) {
            if(string[s] != string[e]) { // 팰린드롬이 아닐 경우
                result = string.length;
                break;
            }
            s++;
            e--;
        }

        if(result == -1) { // 팰린드롬일 경우 모든 문자가 같은지 확인
            for (int i = 1; i < string.length; i++) {
                if(string[0] != string[i]) { // 같은 문자 아닌걸 발견했다면
                    result = string.length - 1; // 문자열 길이 - 1이 답
                    break;
                }
            }
        }

        System.out.println(result);
    }
}
728x90