Game Tech Blog
10988.팰린드롬인지 확인하기 본문
[문제]
알파벳 소문자로만 이루어진 단어가 주어진다. 이때, 이 단어가 팰린드롬인지 아닌지 확인하는 프로그램을 작성하시오.
팰린드롬이란 앞으로 읽을 때와 거꾸로 읽을 때 똑같은 단어를 말한다.
level, noon은 팰린드롬이고, baekjoon, online, judge는 팰린드롬이 아니다.
[입력]
첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다.
[출력]
첫째 줄에 팰린드롬이면 1, 아니면 0을 출력한다.
[TC]
1.TC - Input
level
TC - output
1
2. TC - Input
baekjoon
TC - output
0
[접근]
처음 구안한 방법은 처음과 끝으로 인덱스를 지정해서 하나씩 증가, 감소를 통한 '투포인터' 방식으로 진행
물론, reverse 함수하면 숏코딩이 나올 수 있겠지만, 내장함수 의존적이라고 판단해서 투포인터 방식으로 문제 처리
[코드] - C++
-> 투포인터 방식 사용
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str;
cin >> str;
int i =0;
int j = str.size()-1;
while(i < (str.size()/2))
{
if(str[i] != str[j])
{
cout << 0 ;
return 0;
}
++i;
--j;
}
cout << 1;
return 0;
}
[코드] - C++
-> reverse 함수 사용
#include <iostream>
#include <algorithm>
#include <iterator>
using namespace std;
int main()
{
string str;
string temp;
cin >> str;
temp = str;
reverse(temp.begin(),temp.end());
if(temp != str) cout << 0;
else cout << 1;
return 0;
}
[결과 및 시도]
[후기]
바로 구안한 투포인터 방식으로 사용하면 사실 첫 제출과 정답까지의 간격은 2분, 거의 3분 ~ 4분컷 문제였다.
해설 강의 들으면서 새로운 방식이 있는지 기대를 해보았지만, 일부러 회피했던 reverse 방식을 사용해서 조금 아쉬웠다.
쉬운문제 쉽게 빨리 넘어가는것도 좋지만 다른 원리를 알아가는것도 좋다고 생각하기 때문이다.
reverse 를 사용하기위해는 반복자 헤더도 인클루드 해야된다는것을 vs 에서 직접 적어보고 알았다.
5분컷보다도 빠른 3분컷 문제였다.
'Algorithm > 백준 온라인 저지' 카테고리의 다른 글
11655.ROT13 (0) | 2023.08.03 |
---|---|
1159.농구 경기 (0) | 2023.08.02 |
2979. 트럭 주차 (0) | 2023.07.31 |
10808. 알파벳 개수 (0) | 2023.07.27 |
2309. 일곱 난쟁이 (0) | 2023.07.26 |