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;
}
- 와...간결해도 너무 간결하다.
물론 짧은 코드라고 무조건 좋은 코드라고 볼 순 없겠지만.
이 코드의 경우 가독성까지 잡았기 때문에 내가 짠 코드보다 더 좋다고 생각한다.
'자료구조와 알고리즘 > [Inflearn_큰돌] 10주 완성 C++ 코딩테스트' 카테고리의 다른 글
1주차-4. 11655번: ROT13 (1) | 2022.09.26 |
---|---|
1주차-3. 1159번 농구 경기 (1) | 2022.09.26 |
1주차-1. 2979번 트럭 주차, 카운팅 배열에 대한 개념 (0) | 2022.09.12 |
1주차-0. 기초 개념 : 개념 강의 (0) | 2022.09.04 |
0주차-3. 기초 개념 : 조합(Combination) (0) | 2022.09.03 |
댓글