[백준] 구현 10988번: 팰린드롬인지 확인하기

C.K. ·2022년 6월 3일
0

baekjoon

목록 보기
8/67

문제

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

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

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

입력

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

출력

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

Approach

간단하게 for loop를 사용해도 되지만 간지나게 재귀를 써보았다

  • palindrome인지 아닌지 확인하는 재귀함수를 정의한다
  • 좌측 인덱스와 우측 인덱스가 만날 때까지 재귀
  • 좌측 인덱스는 + 1하면서 우측 인덱스는 -1하면서 둘의 값이 같은지 비교 -> 아닐 시 return false

Source Code

#include <iostream>
#include <bits/stdc++.h>
#include <string>
using namespace std;

// palindrome인지 아닌지 확인하는 재귀함수
bool palindrome(string word, int left, int right)
{
    if (left >= right) 
        return true;
    else if (word[left] != word[right])
        return false;
    else
        return palindrome(word, left + 1, right - 1);
}


int main() {
    string input;
    cin >> input;
    
    // palindrome함수가 true면 1 출력
    if (palindrome(input, 0, input.length() - 1))
        cout << 1 << endl;
    else
    // 아니면 0 출력
        cout << 0 << endl;
    
    return 0;
}
profile
1일 1알고리즘

0개의 댓글