알고리즘
bj17609(회문)-투 포인터, 재귀
쥐4
2025. 4. 21. 20:20
https://www.acmicpc.net/problem/17609
이번 문제는 유연한 사고가 필요한 문제였다.
건너뜀을 재귀로 처리하면 아주 쉽게 풀리는 문제였다.
문제 분류를 보고 투포인터로만 풀어보려고 하는 오류를 범하고 말아따~
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
static int T;
static String[] str;
static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) throws IOException {
initialize();
solve();
}
private static void solve() {
for(int i = 0; i < T; i++){
System.out.println(check(0, str[i].length()-1, str[i], 0));
}
}
private static int check(int start, int end, String s, int flag) {
if (flag == 2) {
return 2;
}
while (start < end) {
if (s.charAt(start) == s.charAt(end)) {
start++;
end--;
} else {
return Math.min(check(start + 1, end, s, flag + 1), check(start, end - 1, s, flag + 1));
}
}
return flag;
}
private static void initialize() throws IOException {
T = Integer.parseInt(bufferedReader.readLine());
str = new String[T];
for(int i = 0; i < T; i++){
str[i] = bufferedReader.readLine();
}
}
}