반응형
https://www.acmicpc.net/problem/10988
문제
알파벳 소문자로만 이루어진 단어가 주어진다. 이때, 이 단어가 팰린드롬인지 아닌지 확인하는 프로그램을 작성하시오.
팰린드롬이란 앞으로 읽을 때와 거꾸로 읽을 때 똑같은 단어를 말한다.
level, noon은 팰린드롬이고, baekjoon, online, judge는 팰린드롬이 아니다.
입력
첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다.
출력
첫째 줄에 팰린드롬이면 1, 아니면 0을 출력한다.
예제 입력 1 | 예제 출력 1 |
예제 입력 2 | 예제 출력 2 |
풀이
1. 문자열 첫 글자 = str[0]
2. 문자열 마지막 글자 = str[str.length()-1]
- 문자열 가장 마지막에 NULL='\0'이라는 값이 있기 때문에 -1을 해준다.
3. str[0] == str[str.length()-1] 같은지 검사하기
코드
#include <iostream>
#include <string>
using namespace std;
int main() {
string str;
cin>>str;
int len = str.length();
int cnt=0;
// 첫 글자 / 마지막글자가 같을때마다 카운트하고
// 그 카운트 수가 문자열/2와 같으면 1을 출력하는 코드
/*
for(int i=0; i<len/2; i++){
if(str[i]==str[str.length()-1-i]){
cnt++;
}
}
if(cnt==len/2){
cout<<"1";
}
else{
cout<<"0";
}
return 0;
*/
for(int i=0; i<len/2; i++){
if(str[i]!=str[str.length()-1-i]){
cout<<"0"<<"\n";
// 첫글자와 마지막 글자가 같지 않으면 바로 끝내버리는 코드
return 0;
}
}
cout<<"1"<<"\n";
}
|
cs |
- 두 가지 방법을 생각해 봤는데 밑에 있는 코드가 더 간결하고 좋다고 생각한다.
반응형
'백준 > C++' 카테고리의 다른 글
[BaeKJoon/C++] 백준 1453 c++ 피시방 알바 (0) | 2022.03.04 |
---|---|
[BaeKJoon/C++] 백준 1871 c++ 좋은 자동차 번호판 (0) | 2022.03.03 |
[BaeKJoon/C++] 백준 4999 c++ 아! (0) | 2022.03.01 |
[BaeKJoon/C++] 백준 11170 c++ 0의 개수 (0) | 2022.02.28 |
[BaeKJoon/C++] 백준 4458 c++ 첫 글자를 대문자로 (0) | 2022.02.27 |