Algorithm/백준 알고리즘
백준_17609 회문(자바) / 문자열
미스터로즈
2021. 7. 25. 14:15
시간&메모리 제한
문제
입력&출력
문제풀이
package com.Back;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Back_17609 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
for (int i = 0; i < N; i++) {
String tmp = br.readLine();
if(palindrome(tmp)) {
sb.append("0\n");
}else if(palindrome2(tmp)) {
sb.append("1\n");
}else {
sb.append("2\n");
}
}
System.out.println(sb);
}
private static boolean palindrome(String tmp) {
int left = 0;
int right= tmp.length()-1;
while(left<=right) {
if(tmp.charAt(left++)!=tmp.charAt(right--)) {
return false;
}
}
return true;
}
private static boolean palindrome2(String tmp) {
int left=0;
int right= tmp.length()-1;
while(left<=right) {
if(tmp.charAt(left)!=tmp.charAt(right)) {
return palindrome(tmp.substring(left+1, right+1)) |
palindrome(tmp.substring(left,right));
}
left++;
right--;
}
return true;
}
}
- 이 문제는 문자열을 이용하는 문제입니다.
- 약간의 재귀를 포함시켜 코드를 짯습니다.
- 처음에는 문자열의 길이를 이용해 홀수 인지 짝수인지를 판단해서 해결을 하려고 했는데, 길이의 고정된 크기로 인해서 1개 지워도 되는 경우를 해결하기 어려웠습니다.