Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 오에스
- OS
- DP
- vector
- 컴퓨터공학과
- Computer science
- 정석학술정보관
- 스택
- 컴공과
- Stack
- bfs
- cs
- 코테
- 북리뷰
- 알고리즘
- coding
- c++
- 오퍼레이팅시스템
- 백준
- Operating System
- 너비우선탐색
- 브루트포스
- 구현
- 문제풀이
- 개발
- 컴공
- 정석
- 그래프
- 코딩
- 자료구조
Archives
- Today
- Total
Little Jay
[C++] 백준 23304번 - 아카라카 본문
문자열 문제 중 대표적인 문제인 팰린드롬 문제이다.
단순히 문자열이 팰린드롬인지 확인하는 것이 아니라,
재귀적으로 left와 right로 나누어서 팰린드롬을 확인해줘야 했던 문제이다.
종료조건은 문자열의 size가 1일때 return해주면 된다.
여타 팰린드롬 문제가 그러하듯 항상 문자열의 size가 홀수일때와 짝수일때를 구분해주면 된다.
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
string s;
bool palindrome(string a) {
if (a.size() == 1) return true;
string left, right;
int size = a.size() / 2;
for (int i = 0; i < size; i++) {
left += a[i];
}
for (int i = 0; i < size; i++) {
if (a.size() % 2 == 1) right += a[i + size + 1];
else right += a[i + size];
}
if (left != right) return false;
if (palindrome(left) && palindrome(right)) return true;
return false;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin >> s;
if (palindrome(s)) cout << "AKARAKA" << endl;
else cout << "IPSELENTI" << endl;
return 0;
}
'알고리즘 > BOJ' 카테고리의 다른 글
[C++] 백준 6118번 - 숨바꼭질 (0) | 2022.05.13 |
---|---|
[C++] 백준 16955번 - 오목, 이길 수 있을까? (0) | 2022.05.13 |
[C++] 백준 1753 - 최단경로 (0) | 2022.05.11 |
[C++] 백준 17127번 - 벚꽃이 정보섬에 피어난 이유 (0) | 2022.05.09 |
[C++] 백준 10552번 - DOM (0) | 2022.05.03 |
Comments