반응형
https://www.acmicpc.net/problem/15927
문자열 다루는 문제였습니다.
📕 풀이방법
너무 깊게 생각하면 안됩니다. 약간의 직관이 필요합니다.
📔 입력 및 초기화
string 형 변수 s에 문자열을 입력받습니다.
📔 풀이과정
1. 모든 문자가 같다면 -1이 답입니다.
2. 모두 같은 문자인 것을 제외한 모든 펠린드롬은 양 옆에 있는 문자중 하나의 문자를 제거하면 펠린드롬이 아니게 됩니다. 따라서 펠린드롬인 경우엔 문자열 s의 길이 - 1이 정답입니다.
3. 펠린드롬이 아니라면 가장 긴 정답은 s문자열 그 자체의 길이입니다.
📕 Code
#include <bits/stdc++.h>
using namespace std;
string s;
bool isPalindrome(){
for(int i = 0; i < s.size() / 2; i++)
if(s[i] != s[s.size() - 1 - i])
return false;
return true;
}
bool isAllSame(){
map <char,int> alphaMap;
for(int i = 0; i < s.size(); i++) alphaMap[s[i]] = 1;
return alphaMap.size() == 1;
}
int main(){
cin >> s;
if(isAllSame()) { cout << -1; return 0; }
if(isPalindrome()) {cout << s.size() - 1; return 0;}
cout << s.size();
}
'Algorithm > String' 카테고리의 다른 글
(C++) - 프로그래머스(2020 KAKAO BLIND RECRUITMENT) : 문자열 압축 (0) | 2021.08.21 |
---|---|
(C++) - 백준(BOJ) 1755번 : 숫자놀이 (0) | 2021.08.16 |
(C++) - 백준(BOJ) 12518번 : Centauri Prime (Small2) (0) | 2021.08.04 |
(C++) - 백준(BOJ) 12517번 : Centauri Prime (Small1) (0) | 2021.08.04 |
(C++) - 백준(BOJ) 8545번 : Zadanie próbne (0) | 2021.08.03 |