728x90
문제
팰린드롬은 앞으로 읽으나 뒤로 읽으나 똑같은 단어나 숫자들을 말한다. 일반적으로 대소문자를 구분하지 않지만, 공백은 구분한다.
다음은 팰린드롬의 예시이다.
- Anna
- Harrah
- Arora
- Nat tan
- 9998999
- 123 321
- $$$&&$$$
모든 라인에 대해 팰린드롬인지 아닌지를 구분하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 n이 주어진다.
각 테스트 케이스는 한 줄의 텍스트로 이루어져있으며, 비어있는 줄은 없다.
출력
각 테스트 케이스에 대해 정답을 출력한다.
팰린드롬일 경우 "Yes"를 출력하고, 그렇지 않을 경우 "No"를 출력한다.
예제 입력 1 복사
6 Nat tan Palindrome 123454321 Dogs and Cats **()()** 1 221
예제 출력 1 복사
Yes No Yes No No No
주어진 문자열이 팰린드롬인지 판별하는 문제이다.
대/소문자 구별을 안하는 것만 주의하면 어렵지 않은 문제이다.
주어진 문자열에서 앞자와 뒷자가 같은지만 계속 검사하면 된다.
C++ 코드
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int N;
int main()
{
cin >> N;
cin.ignore();
while (N--) {
bool isTrue = true;
string str;
getline(cin, str);
for (int i = 0; i < str.size() / 2; i++) {
if (str[i] != str[str.size() - 1 - i]) {
if((('a'<=str[i] && str[i]<='z')&&('A'<=str[str.size()-1-i] && str[str.size()-1-i]<='Z') ||
('A' <= str[i] && str[i] <= 'Z') && ('a' <= str[str.size() - 1 - i] && str[str.size() - 1 - i] <= 'z'))) continue;
isTrue = false;
break;
}
}
if (isTrue) cout << "Yes\n";
else cout << "No\n";
}
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 한 줄로 서기 (1138번) (0) | 2020.08.18 |
---|---|
[백준] 행렬 (1080번) (0) | 2020.08.18 |
[백준] 숫자고르기 (2668번) (0) | 2020.08.18 |
[백준] 컵홀더 (2810번) (0) | 2020.08.17 |
[백준] 더하기 2 (10823번) (0) | 2020.08.17 |