문제 내용은 입력으로 횟수와 문자열을 받고, 받은 문자열이 팰린드롬일 경우 1 아니면 0을 출력하고 동시에 팰린드롬 판별까지 걸린 횟수를 0/1 횟수 이렇게 출력해주면 되는데
문제를 보면 알겠지만 어떻게 풀라고 예시까지 제공해주기 때문에, 이걸 꼭 확인해보고 문제를 풀어주자.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
static String s;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int count = Integer.parseInt(br.readLine());
for (int i = 0; i < count; i++) {
s = br.readLine();
recursive(0, s.length() - 1, 1);
}
}
public static void recursive(int start, int end, int count) {
if (s.charAt(start) != s.charAt(end)) {
System.out.println(0 + " " + count);
return;
}
if (start >= end) {
System.out.println(1 + " " + count);
return;
} else {
recursive(start + 1, end - 1, count + 1);
}
}
}
문제를 풀어보자면 문자열을 받고 재귀 메소드를 호출해야 하는데, 첫 값과, 마지막 값에서 하나씩 움직이며 진행하면서 값이 동일한지 확인하고, 여기서 틀리다면 팰린드롬이 아니기 때문에 0과 시도 횟수를 출력해주고, 다음은 팰린드롬일 경우인데 중간값을 넘어가면 더 이상 비교해볼 필요가 없으므로 시작 값이 끝 값보다 같거나 크면 중단한 뒤 1과 시도 횟수를 출력해주면 끝이다.
문제를 풀다가 막히면 문제 설명에 푸는 로직이 있으므로 이걸 꼭 확인해줘야 편하게 풀 수 있다.
Leave a Reply