BAEKJOON

BAEKJOON 1701번: Cubeditor

杉山空 2022. 3. 1. 20:47
728x90

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

 

1701번: Cubeditor

Cubelover는 프로그래밍 언어 Whitespace의 코딩을 도와주는 언어인 Cubelang을 만들었다. Cubelang을 이용해 코딩을 하다보니, 점점 이 언어에 맞는 새로운 에디터가 필요하게 되었다. 오랜 시간 고생한

www.acmicpc.net

문자열의 최대 길이가 5000이므로 O(N^2)풀이가 가능합니다.

알파벳에서 각 문자가 등장하는 자리를 배열에 저장하고 이를 이용하여 서로 같은 부분의 길이가 얼마나 되는지를 확인하여 주면 됩니다.

 

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <bits/stdc++.h>
using namespace std;
vector<int>pos[30];
char S[5003];
int main(){
    scanf("%s",S);
    int len=strlen(S),ans=0;
    for(int i=0;i<len;i++){
        int p=S[i]-'a';
        for(int j=0;j<(int)pos[p].size();j++){
            int now=0,l=i;
            for(int k=pos[p][j];k>=0;k--){
                if(pos[p][j]<ans)break;
                if(S[k]==S[l])now++;else break;
                l--;
            }
            ans=max(now,ans);
        }
        pos[S[i]-'a'].push_back(i);
    }
    printf("%d",ans);
    return 0;
}
 
cs
728x90

'BAEKJOON' 카테고리의 다른 글

BAEKJOON 11003번: 최솟값 찾기  (0) 2022.03.06
BAEKJOON 1005번: ACM Craft  (0) 2022.03.01
BAEKJOON 2252번: 줄세우기  (0) 2022.03.01
BAEKJOON 8913번: 문자열 뽑기  (0) 2022.02.26
BAEKJOON 9002번: Match Maker  (0) 2022.02.23