C++/백준

[C++] 백준) 10988번 팰린드롬인지 확인하기 문제풀이

S_Hoon 2020. 8. 26. 18:36

https://www.acmicpc.net/problem/10988

 

10988번: 팰린드롬인지 확인하기

첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다.

www.acmicpc.net

문제

알파벳 소문자로만 이루어진 단어가 주어진다. 이때, 이 단어가 팰린드롬인지 아닌지 확인하는 프로그램을 작성하시오.

팰린드롬이란 앞으로 읽을 때와 거꾸로 읽을 때 똑같은 단어를 말한다. 

level, noon은 팰린드롬이고, baekjoon, online, judge는 팰린드롬이 아니다.

입력

첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다.

출력

첫째 줄에 팰린드롬이면 1, 아니면 0을 출력한다.

예제 입력 1

level

예제 출력 1

1

예제 입력 2

baekjoon

예제 출력 2

0


간단히 설명하자면 

팰린드롬은 앞으로 읽어도 똑같고 뒤로 읽어도 똑같은 것을 팰린드롬이라고 한다.

15451, 1001, 2002, lol, level 같은 것들이다.

 

이 문제를 푸는 가장 쉬운 방법은

level이라고 치면

첫번째와 다섯번째를 비교하고 

두번째와 네번째를 비교하고 

가운데는 의미 없으니 넘어간다.

만약 비교한 문자들이 모두 같으면 1을 출력하면 되는 간단한 문제이다.


#include <iostream>
#include <string>

int isPel(std::string a) { // 펠린드롬인지 아닌지 판별하는 함수 선언
    for(int i = 0; i < a.size() / 2; i++) { // string a의 길이에서 2를 나눈 만큼만 반복문을 돌린다
        if(a[i] != a[a.size() - i - 1]) return 0; // a가 level이라고 치면, a[0]과 a[4]를 비교하고 서로 다르다면 0을 리턴
    }
    return 1; // 같다면 1을 리턴한다
}

int main() {
    std::string a; // 입력을 위한 변수 선언
    std::cin >> a; // 입력
    int isPalindrome = isPel(a); // 또 다른 변수에 isPel함수에서 리턴된 값을 저장한다
    
    std::cout << isPalindrome << std::endl; // 1 또는 0 출력
    return 0;
}

#include <iostream>
#include <string>

int isPel(std::string a) {
    for(int i = 0; i < a.size() / 2; i++) {
        if(a[i] != a[a.size() - i - 1]) return 0;
    }
    return 1;
}

int main() {
    std::string a;
    std::cin >> a;
    int isPalindrome = isPel(a);
    
    std::cout << isPalindrome << std::endl;
    return 0;
}