✨컴공주✨ [1052682] · MS 2021 (수정됨) · 쪽지

2024-11-10 00:14:27
조회수 379

컴공 일기251

게시글 주소: https://oldclass.orbi.kr/00069839203


백준 23304 https://www.acmicpc.net/problem/23304



Length가 S인 회문(Palindrome) 내의, Length가 S/2인 접미사와 접두사 또한 회문(Palindrome)인가를 판단하는 문제입니다.


분명 틀린 부분은 없는 것 같은데 계속 오류가 뜨길래 화가 몹시 나서 자고

일어나 오늘 다시 보니까 알겠더군요.


병신아 S가 홀수만 입력된다는 보장이 어디있누?


푸..풀었습니다.


반복문 로직으로 정직하게 밀고 가도, 중간에 홀수 / 짝수 로직만 갈라주면 될 것 같습니다.

어차피 재귀나 반복문이나 동치 관계니까..


근데 재귀로 풀었으니 뭐 어떡해..





#include <iostream>

#include <string>

using namespace std;


bool is_aka_palin(const string &s, const int start, const int end);


int main()

{

    ios::sync_with_stdio(false);

    cin.tie(NULL);

    cout.tie(NULL);


    string s;

    cin >> s;


    if(is_aka_palin(s, 0, s.length()-1))

    {

        cout << "AKARAKA" << "\n";

    }


    else

    {

        cout << "IPSELENTI" << "\n";

    }

}


bool is_aka_palin(const string& s, const int start, const int end)

{

    if(start >= end) return true;


    for(int i=start, j=end; i<j; ++i, --j)

    {

        if(s[i] != s[j]) return false;

    }

    

    int mid = (start + end) / 2;

    int length = (end - start) + 1;

    

    if(length % 2 == 0) return is_aka_palin(s, start, mid) && is_aka_palin(s, mid+1, end);

    

    else return is_aka_palin(s, start, mid-1) && is_aka_palin(s, mid+1, end);

}

0 XDK (+0)

  1. 유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.