BOJ_10942_팰린드롬?_java
2023. 1. 24. 11:24ㆍAlgorithm/BOJ
728x90
https://www.acmicpc.net/problem/10942
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
/**
백준 10942번 팰린드롬?
골드 4
*/
public class BOJ_10942_팰린드롬 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
int[] nums = new int[N+1];
st = new StringTokenizer(br.readLine());
for (int i = 1; i<= N; i++){
nums[i] = Integer.parseInt(st.nextToken());
}
int[][] dp = new int[N+1][N+1];
for (int i = 1; i<=N; i++){ // 길이가 1인 경우는 항상 팰린드롬
dp[i][i] = 1;
}
for (int i = 1; i<N; i++){
if (nums[i] == nums[i+1]) // 길이가 2인 경우는 2개가 같은 경우 팰린드롬
dp[i][i+1] = 1;
}
for (int i = 2; i<N; i++){
for (int j = 1; j<=N-i; j++){ // 길이가 3 이상인 경우들 (j : 시작점, j+i : 끝점)
if (nums[j] == nums[j+i] && dp[j+1][j+i-1] == 1){ //시작점 = 끝점, 시작점-1 ~ 끝점 -1 = 팰린드롬
dp[j][j+i] = 1;
}
}
}
int M = Integer.parseInt(br.readLine());
for (int i = 0; i< M; i++){
st = new StringTokenizer(br.readLine());
int S = Integer.parseInt(st.nextToken());
int E = Integer.parseInt(st.nextToken());
sb.append(dp[S][E]).append("\n");
}
System.out.println(sb.toString());
}
}
'Algorithm > BOJ' 카테고리의 다른 글
BOJ_20040_사이클게임_java (0) | 2023.01.30 |
---|---|
BOJ_17404_RGB거리 2_java (0) | 2023.01.24 |
BOJ_17427_약수의 합 2_java (0) | 2023.01.14 |
BOJ_9252_LCS 2_java (0) | 2023.01.13 |
BOJ_1806_부분합_java (0) | 2023.01.12 |