회문의 회문
풀이
문제는 일단 회문이다.
그런데 회문 안에서 또 회문이 있어야한다.
문제에서 적힌 것을 그대로 실행해주면된다.
- S는 회문이다.
- S의 처음 (N-1)/2글자가 회문이다.
- S의 마지막 (N-1)/2글자가 회문이다.
이 조건을 만족시켜주면 되고, python에서는 아주 간단하게 코드를 구성해서 만들 수 있다.
def solution(S):
# 회문일 때 시작
N = len(S)
if S == S[::-1]:
if S[:N//2] == S[:N//2][::-1] and S[N//2+1:] == S[N//2+1:][::-1]:
return 'YES'
else:
return 'NO'
return 'NO'
T = int(input())
for testcase in range(1, T+1):
S = input()
answer = solution(S)
print(f'#{testcase} {answer}')
C++
궁금해서 GPT를 이용해서(C++할 줄 모름) 회문의 회문문제를 C++로 코드를 짜봤더니 아래처럼 되었다.
C++은 볼 때마다 신기하다. 몰라서 그런가.
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
string solution(string S) {
string r = S;
reverse(r.begin(), r.end());
// 회문일 때 시작
if (S == r) {
string left = S.substr(0, S.size() / 2);
string right = S.substr(S.size() / 2 + 1);
string r_left = left;
reverse(r_left.begin(), r_left.end());
string r_right = right;
reverse(r_right.begin(), r_right.end());
if (left == r_left && right == r_right)
return "YES";
}
return "NO";
}
int main() {
int T;
cin >> T;
for (int testcase = 1; testcase <= T; ++testcase) {
string S;
cin >> S;
string answer = solution(S);
cout << "#" << testcase << " " << answer << endl;
}
return 0;
}
'알고리즘 > SWEA' 카테고리의 다른 글
SWEA D3 10570. 제곱 팰린드롬 수 (python) (0) | 2024.03.01 |
---|---|
SWEA D3 15941.평행사변형 (python) (0) | 2024.03.01 |
SWEA D3 12368. 24시간 (python) (1) | 2024.02.28 |
SWEA D3 13218. 조별과제 (python) (0) | 2024.02.28 |
SWEA D3 15612. 체스판 위의 룩 배치 (python) (1) | 2024.02.27 |