자료구조와 알고리즘/[Inflearn_큰돌] 10주 완성 C++ 코딩테스트
1주차-2. 10988번 팰린드롬인지 확인하기
헛둘이
2022. 9. 13. 15:34
10988번 팰린드롬 문제

문제의 요지는 단순하게 주어진 문장이 팰린드롬인지 확인하는 문제였다.
단어의 길이가 주어져서 배열의 사이즈를 가늠할 수 있다.
먼저 무작정 풀어보기
#include <iostream>
using namespace std;
int main()
{
char chArr[101];
cin >> chArr;
size_t length = 0;
char* p = chArr;
while (*p != '\0')
{
length++;
p++;
}
for (int i = 0; i < length / 2; i++)
{
if (chArr[i] != chArr[length - i - 1])
{
cout << 0 << endl;
return 0;
}
}
cout << 1 << endl;
return 0;
}
- 예전에 이런 비슷한 류의 문제를 본 적이 있었는지 바로 해결책이 떠올랐고 그래서 생각보다 쉽게 풀었다.
- length 변수에 받아온 문장의 길이를 저장하고,
- 그 길이를 토대로 for문을 돌려 배열의 첫 요소와 마지막 요소를 비교하는 식으로 풀었다.
- 아마 가장 흔한 풀이가 아닐까 싶다.

큰돌님의 풀이
- 팰린드롬은 회문이라고도 하고 거꾸로 읽으나 그대로 읽으나 같기 때문에
- 뒤집은 문자와 비교하면 된다.
#include <iostream>
using namespace std;
int main()
{
string s, temp;
cin >> s;
temp = s;
reverse(begin(s), end(s));
if (s == temp) cout << 1 << endl;
else cout << 0 << endl;
}
- 와...간결해도 너무 간결하다.
물론 짧은 코드라고 무조건 좋은 코드라고 볼 순 없겠지만.
이 코드의 경우 가독성까지 잡았기 때문에 내가 짠 코드보다 더 좋다고 생각한다.
