[백준] 25501 재귀의 귀재 - Java

Yunki Kim·2023년 1월 9일
0

백준

목록 보기
87/104
post-thumbnail

문제


링크


코드

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

public class Main {

    static int count = 0;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int T = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < T; i++) {
            String S = br.readLine();
            count = 0;
            sb.append(isPalindrome(S)).append(" ").append(count).append("\n");
        }
        br.close();
        System.out.print(sb);
    }

    static int isPalindrome(String s) {
        return recursion(s, 0, (s.length() - 1));
    }

    static int recursion(String s, int start, int end) {
        count++;

        if (start >= end) return 1;
        else if (s.charAt(start) !=  s.charAt(end)) return 0;
        else return recursion(s, (start + 1), (end - 1));
    }
}

리뷰

펠린드롬을 찾는 문제이다.
펠린드롬이란 문자열의 데칼코마니(?)라고 생각하고있다.
앞으로 읽어도 같고 뒤로 읽어도 같은 문자를 펠린드롬이라 한다.
(내 이름은 이효리, 거꾸로해도 이효리 😆)

출력방식은 펠린드롬 여부에 따라 1, 0을 출력하고 그 뒤에는 recursion() 함수가 몇 번 호출되었는지 출력한다.

몇 번 호출되었는지 알 수 있도록 static 변수로 count를 세주었고
펠린드롬의 여부는 문자의 맨앞과 맨끝부터 한단계씩 가까워지며 문자가 같은지 확인하도록 하였다.
이 때, 문자열의 길이가 1인 경우는 문자하나 자체로 펠린드롬이다.

0개의 댓글