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


주어진 문자열이 팰린드롬인지 판별하는 문제이다.

대/소문자 구별을 안하는 것만 주의하면 어렵지 않은 문제이다.

주어진 문자열에서 앞자와 뒷자가 같은지만 계속 검사하면 된다.

 

 

코드 원본 : https://github.com/chosh95/STUDY/blob/master/BaekJoon/2020/%ED%8C%B0%EB%A6%B0%EB%93%9C%EB%A1%AC%20(10174%EB%B2%88).cpp

 

chosh95/STUDY

프로그래밍 문제 및 알고리즘 정리. Contribute to chosh95/STUDY development by creating an account on GitHub.

github.com

 

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

+ Recent posts