728x90
https://www.acmicpc.net/problem/1254
1254번: 팰린드롬 만들기
동호와 규완이는 212호에서 문자열에 대해 공부하고 있다. 규완이는 팰린드롬을 엄청나게 좋아한다. 팰린드롬이란 앞에서부터 읽으나 뒤에서부터 읽으나 같게 읽히는 문자열을 말한다. 동호는
www.acmicpc.net
문제 입력 값이 최대 50이라
브루트 포스하게 찾았다.
처음 착각했던 것은 문자열 중간에도 삽입 가능한 줄 알았다.
문자열 뒤에 추가해야 하므로
하나씩 검사하면서 단순하게 뒤에 추가하는 방법으로 해결했다.
*
입력 값이 작아서 이렇게 단순하게 해결했지만 크다면 문제가 생긴다.
팰린드롬 문제를 해결하는 알고리즘으로
Manacher 알고리즘이 있었다.
이걸 공부해야겠다.
#include <iostream>
#include <string>
using namespace std;
int main(void) {
string str;
cin >> str;
int add = 0;
int pos = str.size();
while (1) {
int i = 0;
int j = str.size() - 1;
bool check = true;
while (i <= j) {
if (str[i] != str[j]) {
check = false;
break;
}
i++;
j--;
}
if (check)
break;
str.insert(str.begin() + pos, str[add++]);
}
cout <<str.size();
}
728x90
'문제 > 백준' 카테고리의 다른 글
c++ 백준_1132_"합" (0) | 2023.06.13 |
---|---|
c++ 백준_15686_"치킨 배달" (2) | 2023.06.13 |
c++, python 백준_1915_"가장 큰 정사각형" (0) | 2023.06.13 |
c++ 백준_17070_"파이프 옮기기1" (0) | 2023.06.13 |
c++ 백준_1991_"트리 순회" (0) | 2023.06.13 |