백준 10942번: 팰린드롬?
1. 문제 설명

2. 문제 풀이
- 팰린드롬(회문): 거꾸로 읽어도 제대로 읽는 것과 같은 문장이나 낱말, 숫자, 문자열 등이다.
- 시간초과 방지를 위해 Scanner대신 BufferedReader와 StringTokenizer 사용
- 배열 양끝점(배열의 첫번째 인덱스와 마지막 인덱스)끼리 비교
int left=s;
int right=e;
while(left<right) {
if(arr[left]!=arr[right]) {
return false;
}
else {
left++;
right--;
}
}
return true;
코드
import java.io.*;
import java.util.*;
public class No_10942 {
public static boolean check(int[] arr,int s, int e) {
int left=s;
int right=e;
while(left<right) {
if(arr[left]!=arr[right]) {
return false;
}
else {
left++;
right--;
}
}
return true;
}
public static void main(String[] args)throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int N=Integer.parseInt(reader.readLine());
int[] arr= new int[N+1];
StringTokenizer st = new StringTokenizer(reader.readLine());
for(int i=1;i<=N;i++) {
arr[i]=Integer.parseInt(st.nextToken());
}
int M=Integer.parseInt(reader.readLine());
StringBuilder sb = new StringBuilder();
for(int i=0;i<M;i++) {
st = new StringTokenizer(reader.readLine());
int s=Integer.parseInt(st.nextToken());
int e=Integer.parseInt(st.nextToken());
if(check(arr,s,e)) {
sb.append("1\n");
}
else {
sb.append("0\n");
}
}
System.out.print(sb);
}
}
결과

- Scanner을 사용했을때는 시간 초과 발생
