작성일 :

문제 링크

10174번 - 팰린드롬

설명

주어진 문자열이 앞에서부터 읽을 때와 뒤에서부터 읽을 때가 동일한지 확인하는 문제입니다.

입력으로 주어지는 문자열에 대하여 대소문자를 구분하지 않고 좌우가 대칭되는지를 판단합니다.


접근법

  • 먼저 테스트케이스의 개수를 입력받습니다.
  • 이후 각 줄의 문자열을 입력받아 모든 문자를 소문자로 변환합니다.
    (대/소문자를 구분하지 않기 위함이므로, 모든 문자를 대문자로 변환하여도 됩니다.)
  • 변환된 문자열에 대해 양쪽 끝에서 가운데로 비교하며,
    서로 다르면 팰린드롬이 아니라고 판단합니다.
  • 모든 테스트케이스에 대해 결과를 차례대로 출력합니다.



Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System;

class Program {
  static void Main() {
    int t = int.Parse(Console.ReadLine());
    for (int i = 0; i < t; i++) {
      var s = Console.ReadLine().ToLower();
      bool pal = true;
      for (int j = 0; j < s.Length / 2; j++) {
        if (s[j] != s[s.Length - 1 - j]) {
          pal = false;
          break;
        }
      }
      Console.WriteLine(pal ? "Yes" : "No");
    }
  }
}

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  string s; getline(cin, s);
  int t = stoi(s);
  while (t--) {
    getline(cin, s);
    for (char& c : s)
      if (isupper(c)) c = tolower(c);

    bool pal = true;
    for (int i = 0; i < s.size() / 2; i++) {
      if (s[i] != s[s.size() - 1 - i])
        pal = false;
    }

    cout << (pal ? "Yes\n" : "No\n");
  }

  return 0;
}