반응형
Palindrome, 한국어로 회문이라는 뜻으로 거꾸로 읽어도 제대로 읽는 것과 같은 문장이나 낱말, 숫자, 물자열 등이다.
보통 낱말 사이에 있는 띄어쓰기나 문장 부호는 무시한다.
입력받은 단어가 팰린드롬인지 아닌지 확인하려면 어떻게 해야 할까?
문자열을 뒤집으면 된다.
이는 실제 구현된 함수를 이용하면 매우 간단하게 구현할 수 있다.
#include <bits/stdc++.h>
using namespace std;
string str;
int main() {
cin >> str;
auto tmp = str;
reverse(tmp.begin(), tmp.end());
if(str == tmp){
cout << 1 << '\n';
}else{
cout << 0 << '\n';
}
return 0;
}
reverse() 함수는 <algorithm> 헤더 파일에 정의된 함수이다. 이를 구현한다면 다음과 같을 것이다.
template <class BidirectionalIterator>
void reverse(BidirectionalIterator first, BidirectionalIterator last) {
while ((first != last) && (first != --last)) {
std::iter_swap(first, last);
++first;
}
}
종료 조건은 first와 last가 서로 만날 때까지 반복하며 원소를 교체하는 것이다.
증감된 first가 last와 일치하는지 확인한 후 --last를 통해 실제 값을 내린 이후 반복적으로 스왑을 하다 서로 교체하는 상황이 되는 경우 종료하여 시퀀스를 역순으로 뒤집는 것이다.
반응형
'자료구조와 알고리즘 > 알고리즘' 카테고리의 다른 글
ROT13(11655) (0) | 2023.07.02 |
---|---|
농구 경기(1159) (0) | 2023.07.02 |
트럭 주차 (0) | 2023.07.01 |
문자열 카운팅. (0) | 2023.07.01 |
2309 (0) | 2023.06.26 |
댓글