rueki
SW Expert Academy 1989. 초심자의 회문검사 본문
728x90
반응형
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
이번 문제는 회문인지 아닌지를 판단하는 문제이다
쉽게 설명하면 문자열에서 가운데 문자를 기준으로 좌우 문자가 같아야한다. 예를 들어 기러기, 토마토 처럼 말이다.
#include <iostream>
#include <string>
using namespace std;
int main()
{
int num;
int T;//테스트 케이스 수
cin >> T;
for (int i = 0; i < T; i++)
{
string str1;
cin >> str1;
/*
if (str1.length() > 10 || str1.length() < 3)
{
return false;
continue;
}
*/
for (int i = 0; i < ((str1.length()) / 2)+1; i++)
{
int index = str1.length() / 2;
if (str1.length() % 2 == 1) {
if (str1[index + i] == str1[index - i])
{
num = 1;
}
else if (str1[index + i] != str1[index - i])
{
num = 0;
}
}
if (str1.length() % 2 == 0) {
if (str1[index] == str1[index - 1])
{
if (str1[index + i] == str1[index])
{
num = 1;
}
}
else
{
num = 0;
}
}
}
cout<<'#'<<i+1<<' '<<num<<'\n';
}
return 0;
}
생각해야 될 조건은 아래와 같다.
1. 문자열 길이는 3 ~ 10이고, 회문 검사할 문자의 길이가 홀수인지, 짝수인지
2. 홀수 짝수에 따른 인덱스 설정해서 비교
c++ 의 string 을 사용하였으며, 이는 배열처럼 인덱스 접근이 가능하다.
홀수 길이의 문자인 경우, 가운데 문자를 중심으로 양옆을 비교하면 되지만,
짝수 길이인 경우에는, 가운데 문자에서 옆의 문자까지 하나의 문자로 보고 접근을 해야한다.
aaeedd의 경우에 ee를 하나로 봐야한다는 것이다.
인덱스는 (문자열 길이 / 2)로 정했는데, 문자열의 길이가 5일경우 중앙 인덱스는 2가 된다. 예는 아래와 같다.
0 1 2 3 4
a b c d e
그 외의 문제 접근은 코드를 보면 이해가 될 것이라 생각이 든다.
728x90
반응형
'C, C++ 문제풀이' 카테고리의 다른 글
SW Expert Academy 1288. 새로운 불면증 치료법 (2) | 2020.04.05 |
---|---|
SW Expert Academy 1976. 시각 덧셈 (0) | 2020.04.04 |
SW Expert Academy 2005. 파스칼의 삼각형 (0) | 2020.02.28 |
SW Expert Academy 1926. 간단한 369게임 (0) | 2020.02.26 |
SW Expert Academy 2027. 대각선 출력하기 (0) | 2020.02.25 |
Comments