[백준] 1254 - 펠린드롬 만들기
1. 문제
2. 개요
문자열 S가 주어진다.
이 문자열 S의 뒤에 문자를 추가하여 펠린드롬을 만드려고 한다.
이 때 만들 수 있는 펠린드롬 문자열 중 가장 짧은 문자열의 길이를 출력하는 문제.
3. 풀이 및 코드
3-1. 풀이
처음부터 i번째 인덱스까지의 문자열을 뒤집어 맨 뒤에 이어붙인 후, 이 문자열이 펠린드롬이라면 그 길이를 출력한다.
3-2. Python
import sys
S = sys.stdin.readline().rstrip()
answer = len(S) * 2
def chk(s):
for i in range(len(s) // 2):
if s[i] != s[-1 - i]:
return False
return True
for i in range(len(S)):
if chk(S + S[:i][::-1]):
answer = min(answer, len(S + S[:i][::-1]))
break
print(answer)
3-3. C#
namespace boj_1254
{
internal class Program
{
static void Main(string[] args)
{
string S = Console.ReadLine().TrimEnd();
int answer = S.Length * 2;
for (int i = 0; i < S.Length; i++)
{
string tmp = S + new string(S[..i].Reverse().ToArray());
if (Chk(tmp))
answer = (int)MathF.Min(answer, tmp.Length);
}
Console.WriteLine(answer);
}
static bool Chk(string str)
{
for (int i = 0; i < str.Length / 2; i++)
{
if (str[i] != str[str.Length - 1 - i])
return false;
}
return true;
}
}
}
Comments