https://www.acmicpc.net/problem/17609
풀이
사용한 알고리즘 : 투 포인터
풀이전략
1. 문자열의 시작점 인덱스를 start, 끝점 인덱스를 end로 둔다.
2. start 인덱스에 해당하는 문자와, end 인덱스에 해당하는 문자를 비교하여 일치하면
++start, --end를 수행한다.
3. 만약 start 인덱스에 해당하는 문자와, end 인덱스에 해당하는 문자가 일치하지 않는다면
count를 1 증가시키고
start를 1 증가시켜 문자 하나를 제외한 경우와 end를 1 감소시켜 문자 하나를 제외한 경우에
문자 비교가 문제없이 진행되면 반복문을 탈출하고, 그래도 문제가 발생하면 count를 1 더 증가시킨다.
4. count를 출력한다.
제출코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
static int start, end;
static boolean compare(String str){
boolean check;
if(check=(str.charAt(start)==str.charAt(end))){
++start;
--end;
}
return check;
}
public static void main(String args[]) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for(int i=0;i<T;++i){
String str=br.readLine();
int count=0;
start=0;
end=str.length()-1;
while(start<end){
if(!compare(str)){
++count;
break;
}
}
int tempStart=start;
int tempEnd=end;
boolean check=false;
if(count==1){
++start;
while(start<end){
if(!compare(str)){
check=true;
break;
}
}
if(check==true){
start=tempStart;
end=tempEnd-1;
while(start<end){
if(!compare(str)){
++count;
break;
}
}
}
}
System.out.println(count);
}
}
}
'알고리즘||코딩테스트 > 백준' 카테고리의 다른 글
[백준 2493번] 탑 - JAVA (0) | 2023.07.17 |
---|---|
[백준 2668번] 숫자 고르기 - JAVA (0) | 2023.07.16 |
[백준 1707번] 이분 그래프 - JAVA (0) | 2023.07.15 |
[백준 11403번] 경로 찾기 - JAVA (0) | 2023.07.14 |
[백준 11404번] 플로이드 - JAVA (0) | 2023.07.13 |