[Algorithm/Java] 백준 17609번 - 회문
https://www.acmicpc.net/problem/17609
🔍 문제 풀이
문제 도식화
양 끝 포인터로 문자를 비교하며 불일치 시 좌·우 한 글자 제외 케이스를 각각 검사해 결과 판별

💻 코드
전체 코드
import java.io.*;
public class Main {
    static String str;
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        while(n --> 0){
            str = br.readLine();
            int ans = check();
            System.out.println(ans);
        }
    }
    // 0: 회문, 1: 유사 회문, 2: 불가능
    static int check(){
        int s = 0, e = str.length()-1;
        while(s < e){
            if(str.charAt(s) == str.charAt(e)) {
                s++; e--; // 같으면 포인터 이용
            } else if (isPalindrome(s, e-1) || isPalindrome(s+1, e)){
                return 1; // 한글자 제외했을 때 같으면 유사회문
            } else{
                return 2; // 회문x
            }
        }
        return 0;
    }
    // 구간 [s, e] 팰린드롬 검사
    static boolean isPalindrome(int s, int e){
        while(s < e){
            if(str.charAt(s) != str.charAt(e)) return false;
            else {
                s++; e--;
            }
        }
        return true;
    }
}
      
댓글남기기