문제 출처 : https://www.acmicpc.net/problem/10988
10988번: 팰린드롬인지 확인하기
첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다.
www.acmicpc.net
고려사항
- 단어의 앞 글자 인덱스가 0이고, 단어의 길을 len, len/2를 mid라 할 때 (소숫점 이하는 형변환에 의해 버려짐)
단어의 길이가 홀수 일 땐, (0,len-1), (1,len-2),....(mid-1,mid+1)만 비교하고 mid의 철자는 비교 페어가 없어 내버려둔다.
단어의 길이가 짝수 일 땐, (0,len-1), (1,len-2),....(mid-1,mid)를 하면 모든 대칭 철자 비교가 완료 된다.
따라서 비교 반복문의 범위를 0 <= i < mid 까지 설정해주면 된다.
- 철자 검사 반복문에서 철자가 대칭이 아닐 시 반복문을 break으로 빠져나오고 answer=0 이기 때문에
answer의 초기값은 1이 되어야 한다.
#include <iostream>
#include <string>
using namespace std;
int main() {
string word;
cin>>word;
int len = word.length();
int mid = len / 2; // mid엔 정수형으로 저장이 되기 때문에
// 단어 길이가 홀수든 짝수든 대칭 비교가 가능하다.
int answer = 1; // 단어 철자 비교시 같지 않음이 판명나면
// answer에 0을 저장후 break하기 때문에 초기값은 1
for(int i=0;i<mid;++i){
if(word[i] != word[len-1-i]){ // 중간을 기준으로 대칭 지점에 있는 철자와 다르면
answer = 0; // 팰린드롬이 아니다.
break;
}
}
cout<<answer;
return 0;
}
'BOJ 백준 > 문자열' 카테고리의 다른 글
백준 09935 - 문자열 폭발 (0) | 2020.11.12 |
---|---|
백준 05670 - 휴대폰 자판 (0) | 2020.11.07 |
백준 14425 - 문자열 집합 (0) | 2020.11.07 |
백준 10545 - 뚜기뚜기메뚜기 (0) | 2020.01.04 |