티스토리 뷰

Algorithm/BOJ

10942 팰린드롬?

henry1214 2019. 10. 12. 21:43

https://www.acmicpc.net/problem/10942

 

10942번: 팰린드롬?

총 M개의 줄에 걸쳐 홍준이의 질문에 대한 명우의 답을 입력으로 주어진 순서에 따라서 출력한다. 팰린드롬인 경우에는 1, 아닌 경우에는 0을 출력한다.

www.acmicpc.net

 

d[i][j] = 구간 [i,j]가 팰린드롬인지 여부

 

팰린드롬의 성질을 이용해서 구간을 확장시켜가면서 a[i]와 a[j]가 같을 때, d[i+1][j-1]이 참인지 확인하면 된다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <cstdio>
 
int i,j,k,n,m,p,q,a[2001];
bool d[2001][2001];
 
int main()
{
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d",&a[i]),d[i][i]=1;
        if(a[i-1]==a[i]) d[i-1][i]=1;
    }
    for(k=3;k<=n;k++for(i=1,j=k;j<=n;i++,j++)
        if(a[i]==a[j] && d[i+1][j-1]) d[i][j]=1;
    scanf("%d",&m);
    while(m--scanf("%d %d",&p,&q),printf("%d\n",d[p][q]);
    return 0;
}
cs

 

'Algorithm > BOJ' 카테고리의 다른 글

12969 ABC  (0) 2019.10.13
1328 고층 빌딩  (0) 2019.10.13
1890 점프  (0) 2019.10.12
11048 이동하기  (0) 2019.10.12
9536 여우는 어떻게 울지?  (0) 2019.09.26
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday