문제출처: https://www.acmicpc.net/problem/10174


알고리즘 설명

1. 입력한 문자열의 길이/2의 횟수만큼 문자열의 (첫글자,마지막글자),(첫글자+1글자,마지막글자-1) ....식으로 비교합니다.

2. 대문자와 소문자는 구별하지않기때문에 같다고알려줘야하는데 위의 비교식에서 이를 해결하려면 코드가 너무지저분해집니다.

3. 2번문제를 해결하기 위해 애초에 1번을 하기전에 입력한문자열을 통째로 대문자나 소문자로 통일시킵니다.

4. 비교연산중 한번이라도 짝이안맞으면 틀리므로 check변수로 참유무를 갱신합니다.

5. 3->1->4 순으로 해결합니다.


#include<iostream>
#include<string>
using namespace std;
int main()
{
	int n;
	cin >> n;
	cin.ignore();
	string s;
	for (int i = 0; i < n; i++)
	{
		getline(cin, s);
		bool check = true;
		for (int i = 0; i < s.size(); i++)
		{
			if (s[i] >= 'A' && s[i] <= 'Z')
				s[i] = s[i] - 'A' + 'a';
		}
		int len = s.size();
		for (int i = 0; i < len / 2; i++)
		{
			if (s[i] != s[len - i - 1])
			{
				check = false;
				break;
			}
		}
		if (check)
			cout << "Yes" << endl;
		else
			cout << "No" << endl;
	}
}


'문제풀이(BOJ) > 문자열' 카테고리의 다른 글

[백준 9226] 도깨비말  (0) 2019.12.06
[백준 1431] 시리얼 번호  (0) 2019.12.04
[백준 2703] Cryptoquote  (0) 2019.12.02
[백준 11536] 줄 세우기  (0) 2019.12.02
[백준2935]소음  (0) 2019.12.01

+ Recent posts