※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 16189번 문제인 Repetitive Palindrome이다.
문제는 아래 링크를 확인하자.

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

 

16189번: Repetitive Palindrome

If $t$ is a palindrome, print YES. If not, print NO.

www.acmicpc.net

어떤 문자열 s가 있을 때, s를 여러 개 나열한 문자열이 팰린드롬(회문)이라면 이 문자열의 앞 slen개와 (뒤 slen개의 문자열을 순서로 반대로 한 문자열)은 일치해야 한다. (단, slen은 s의 길이이다.) 즉, s는 팰린드롬이어야 한다.

 

한편, s가 팰린드롬이라면 s를 여러 개 나열한 문자열 또한 팰린드롬이 된다는 점은 자명하다. 앞뒤로 slen개씩의 문자열을 비교해나간다고 생각해보면 위 성질의 증명을 간단히 할 수 있을 것이다.

 

따라서 입력으로 주어진 k값에 상관없이, 입력으로 주어진 문자열이 팰린드롬인지 여부를 확인해 문제를 해결하자.

 

아래는 제출한 소스코드이다.

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	string s; cin >> s;
	string ss = s;
	reverse(ss.begin(), ss.end());
	if (s == ss) cout << "YES";
	else cout << "NO";
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 15238 // C++] Pirates  (0) 2022.11.24
[BOJ 15234 // C++] Number Pairs  (0) 2022.11.24
[BOJ 25756 // C++] 방어율 무시 계산하기  (0) 2022.11.24
[BOJ 15232 // C++] Rectangles  (0) 2022.11.24
[BOJ 10105 // C++] Assigning Partners  (0) 2022.11.24

+ Recent posts