백준 25501 재귀의 귀재 (JAVA 자바 풀이)
📌 문제
정휘는 후배들이 재귀 함수를 잘 다루는 재귀의 귀재인지 알아보기 위해 재귀 함수와 관련된 문제를 출제하기로 했다.
팰린드롬이란, 앞에서부터 읽었을 때와 뒤에서부터 읽었을 때가 같은 문자열을 말한다. 팰린드롬의 예시로 AAA, ABBA, ABABA 등이 있고, 팰린드롬이 아닌 문자열의 예시로 ABCA, PALINDROME 등이 있다.
어떤 문자열이 팰린드롬인지 판별하는 문제는 재귀 함수를 이용해 쉽게 해결할 수 있다. 아래 코드의 isPalindrome 함수는 주어진 문자열이 팰린드롬이면 1, 팰린드롬이 아니면 0을 반환하는 함수다.
⚔ 입력
📣 출력
각 테스트케이스마다, isPalindrome 함수의 반환값과 recursion 함수의 호출 횟수를 한 줄에 공백으로 구분하여 출력한다.
💎 문제 분석
주어진 샘플응 사용해서 counts만 해주면 된다.
다만 펠린드롬 로직을 이해해두는 게 필요하다.
💡 코드 구현
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
private static int recursionCounts;
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
int testCases = Integer.parseInt(bufferedReader.readLine());
while (testCases-->0){
recursionCounts = 0;
String text = bufferedReader.readLine();
System.out.printf("%d %d\n", isPalindrome(text), recursionCounts);
}
}
public static int recursion(String text, int left, int right) {
recursionCounts++;
if (left >= right) {
return 1;
}
if (text.charAt(left) != text.charAt(right)) {
return 0;
}
return recursion(text, left + 1, right - 1);
}
public static int isPalindrome(String text) {
return recursion(text, 0, text.length() - 1);
}
}
반응형
'알고리즘 > 백준' 카테고리의 다른 글
백준 1620 나는야 포켓몬 마스터 이다솜 (JAVA 자바 풀이) (0) | 2022.12.03 |
---|---|
백준 2231 분해합 (JAVA 자바 풀이) (0) | 2022.12.03 |
백준 10870 피보나치 수 5 (JAVA 자바 풀이) (0) | 2022.12.03 |
백준 18870 좌표 압축 (JAVA 자바 풀이) (0) | 2022.12.03 |
백준 10814 나이순 정렬 (JAVA 자바 풀이) (0) | 2022.12.02 |