[백준] 10942번: 팰린드롬?

앙이🐯·2022년 7월 25일
0

알고리즘

목록 보기
22/22

백준 10942번: 팰린드롬?

1. 문제 설명

2. 문제 풀이

  • 팰린드롬(회문): 거꾸로 읽어도 제대로 읽는 것과 같은 문장이나 낱말, 숫자, 문자열 등이다.
  1. 시간초과 방지를 위해 Scanner대신 BufferedReaderStringTokenizer 사용
  2. 배열 양끝점(배열의 첫번째 인덱스와 마지막 인덱스)끼리 비교
	int left=s; //시작점(배열의 첫번째 인덱스)
	int right=e; //끝점(배열의 마지막 인덱스)
		
	while(left<right) {
    	//시작점과 끝점의 배열 값을 비교 
		if(arr[left]!=arr[right]) {
			return false;
		}
        //시작점과 끝점의 배열 값이 일치할때 시작점 인덱스를 +1, 끝점의 인덱스를 -1해줌 
		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을 사용했을때는 시간 초과 발생

0개의 댓글