별의 공부 블로그 🧑🏻‍💻
728x90
728x170

문제

팰린드롬은 앞으로 읽으나 뒤로 읽으나 똑같은 단어나 숫자들을 말한다. 일반적으로 대소문자를 구분하지 않지만, 공백은 구분한다.

다음은 팰린드롬의 예시이다.

  • 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

 

 

출처

High School > PLU High School Programming Contest > PLU 2014 - Novice 5번

· 문제를 번역한 사람: minjunkweon

 

 

코드

 

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
26
27
28
29
30
31
32
#include <iostream>
#include <string>
#include <cctype>    // tolower()
using namespace std;
 
int main() 
{
    int n;
    
    cin >> n;
    cin.ignore();   // Removing '\n' in a Buffer.
    
    for(int i = 0; i < n; i++) {
        string ary; 
        int isSame = 1;
        
        getline(cin, ary);    // instead of 'gets()' in C. (It is impossible to use 'gets()' in C++.)
    
        for(int i = 0; i < ary.length() / 2; i++) {
            if (tolower(ary[i]) != tolower(ary[ary.length() - 1 - i])) {
                isSame = 0;
                break;
            }
        }
    
        if (isSame != 1cout << "No" << endl;
        else cout << "Yes" << endl;
        
    }
    
    return 0;
}






cin을 이용하여 테스트 케이스의 갯수를 입력 받으면 화이트 스페이스('\n')가 입력 버퍼에 남게 된다.

그래서 이 화이트 스페이스를 입력 버퍼에서 제거하기 위해서 cin.ignore() 함수를 사용하였다.

텍스트에 공백이 포함될 수 있으므로, 공백을 포함한 문자열을 입력받는 getline() 함수를 사용하였다. (C에서는 gets() 함수를 사용한다. C++에서는 이 함수를 지원하지 않는다. cin을 이용하여 텍스트를 입력받을 경우 띄어쓰기가 포함된 텍스트를 입력받을 수 없다.)

tolower() 함수를 사용하여 입력받은 문자열에 포함된 대문자의 알파벳을 모두 소문자로 변경하도록 하였다. (이 함수를 사용하려면 cctype 헤더를 include 해야 한다.)


이번 문제를 풀면서 문자열 입력에 관한 여러가지 정보를 얻을 수 있었다.


728x90
그리드형(광고전용)

'Problem Solving > BaekJoon Online Judge' 카테고리의 다른 글

[BOJ7567][C++] 그릇  (0) 2018.09.29
[BOJ7568][C++] 덩치  (0) 2018.09.29
[BOJ1978][C++] 소수 찾기  (0) 2018.09.15
[BOJ12400][C++] Google語스  (0) 2018.09.08
[BOJ14490][C++] 백대열  (0) 2018.08.25
[BOJ14495][C++] 피보나치 비스무리한 수열  (0) 2018.08.24
[BOJ15552][C++] 빠른 A+B  (1) 2018.08.18
[BOJ15953][C++] 상금 헌터  (0) 2018.08.15
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️


📖 Contents 📖