SWEA

SWEA - 17319 문자열문자열(c++)

Daekyue 2023. 11. 8. 20:50

처음 이 문제를 봤을 때 문제가 잘 이해가 되지 않았는데 문제를 바꿔서 적으니 이해가 되었다

재현이는 알파벳 소문자로 이루어진 문자열 하나를 받아 그대로   연달아 썼다

=> 재현이는 알파벳 소문자로 이루어진 문자열을 입력받으면 그 문자열을 두 번 출력한다

당신에게 문자열이 주어질  문자열이 재현이가 만들어   있는 문자열인지 판단하라.
=> 당신에게 주어진 문자열이, 재현이가 출력할 수 있는 문자열인지 판단하라

 

ex) abcabc => abc의 반복으로 재현이 만들 수 있다     ab=> 반복되지 않은 문자열이므로 재현이 만들 수 없다

[D3] 문자열문자열 - 17319

문제 링크

출처: SW Expert Academy, https://swexpertacademy.com/main/code/problem/problemList.do

 

#include<bits/stdc++.h>

using namespace std;

int main(int argc, char** argv)
{
    int test_case;
    int T;
    cin >> T;
    for (test_case = 1; test_case <= T; ++test_case)
    {
        int num = 0;
        string str = "";
        cin >> num;
        cin >> str;
        cout << "#" << test_case << " ";
        if (num % 2 == 1)
        {
            cout << "No\n";
            continue;
        }
        if (str.substr(0, (num / 2)) == str.substr((num / 2), num - 1))
            cout << "Yes\n";
        else
            cout << "No\n";
    }
    return 0;//정상종료시 반드시 0을 리턴해야합니다.
}

문자열이 반복되었는지 확인하는 문제로 입력받은 str이 홀수이게 될 경우, str은 반복될 수 없고 num을 반으로 나눈 만큼 str을 잘라 앞 뒤를 비교하면 반복되었는지 확인할 수 있다