[BOJ]23304 아카라카

강동현·2023년 12월 25일
0

코딩테스트

목록 보기
49/111
  • sol: 재귀 풀이법
  1. 문제의 Base Condition을 이용한다 : str.size()==1str.size() == 1
  2. 현재 문자열팰린드롬임을 확인한다.
  3. 문자열을 두 갈래로 재귀 실행한다. substr(),ceil()사용substr(), ceil()사용 //ceil()은 홀수, 짝수 구분 없이 구현하기 위함
#include<bits/stdc++.h>
using namespace std;
string str;
bool isPal(string str){
    for(int i = 0; i < str.size() / 2; ++i){
        if(str[i] != str[str.size() - i - 1]) return false;
    }
    return true;
}
bool recursive(string str){
    if(str.size() == 1) return true;
    else if(!isPal(str)) return false;
    return recursive(str.substr(0, str.size() / 2)) && recursive(str.substr(ceil(str.size() / 2.0f), str.size() / 2));
}
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    cin >> str;
    if(recursive(str)) cout << "AKARAKA";
    else cout << "IPSELENTI";
    return 0;
}
profile
GAME DESIGN & CLIENT PROGRAMMING

0개의 댓글