※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 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 |