문제
https://www.acmicpc.net/problem/9933
풀이
입력되는 문자열 중에서 특정 문자열이 반전된 문자열이 포함되었는지를 확인해야 하는 문제이다.
즉, 입력된 문자열 중 abc가 있고, cba도 있다면 이 문자열의 길이인 3과 가운데 글자인 b를 출력하면 된다.
특정 문자열이 존재하는지 아닌지를 확인하기 위해 set을 사용했다.
먼저 문자열들을 입력받아서 set에 계속 저장한다.
문자열을 입력받아서 반전 시킨 후, 그 문자열이 set에 있는지 확인해봤을 때,
존재한다면 그 문자열이 우리가 찾는 답이 된다.
코드
#include <iostream>
#include <string>
#include <set>
#include <algorithm>
using namespace std;
int main()
{
set<string> sset;
int n;
cin>>n;
string res;
int reslen=0;
for(int i=0; i<n; i++)
{
bool flag = true;
string s;
cin>>s;
int len = s.length();
for(int j=0; j<len/2; j++)
{
if(s[j]!=s[len-j-1])
{
flag = false;
break;
}
}
if(flag)
{
res=s;
reslen = len;
}
else
{
reverse(s.begin(),s.end());
if(sset.find(s)!=sset.end())
{
res=s;
reslen = len;
}
else
{
reverse(s.begin(),s.end());
sset.insert(s);
}
}
}
cout<<reslen<<' '<<res[reslen/2];
}
'알고리즘 > 문제 풀이' 카테고리의 다른 글
백준 4470 - 줄번호 (0) | 2022.11.17 |
---|---|
백준 17608 - 막대기(C++) (0) | 2022.11.08 |
백준 10826 - 피보나치 수 4(C++) (0) | 2022.10.13 |
백준 9251 - LCS (C++) (0) | 2022.09.13 |
백준 14490 - 백대열(C++) (0) | 2022.09.04 |