문자열이 입력으로 주어졌을 때, 해당 문자열의 첫 번째 문자와 마지막 문자가 서로 같은지 판별하는 것이 이번 문제의 목표입니다. C++의 기본적인 문자열 처리 함수만 활용하면 아주 간단하게 해결할 수 있습니다.
예시
입력: study 출력: 같지 않음 첫 번째 문자는 's'이고 마지막 문자는 'y'이기 때문입니다. 입력: nitin 출력: 첫 번째와 마지막 문자가 같습니다 첫 번째 문자는 'n'이고 마지막 문자도 'n'이기 때문입니다.
문제 해결 접근 방식
- 문자열을 입력받아 변수에 저장합니다.
- length() 함수를 사용하여 문자열의 길이를 계산합니다.
- 문자열의 첫 번째 문자와 마지막 문자를 비교하여, 같으면 1을 반환하고 그렇지 않으면 0을 반환합니다.
- 최종 결과를 출력합니다.
여기서 한 가지 주의할 점은 문자열의 길이가 2보다 작은 경우입니다. 빈 문자열이거나 너무 짧은 입력은 유효한 비교 대상이 아니므로, 이 경우에는 별도로 처리하여 -1을 반환하도록 설계했습니다.
알고리즘
시작 Step 1 -> 첫 번째 문자와 마지막 문자가 같은지 검사하는 함수 선언 int check(string str) set int len = str.length() IF (len < 2) return -1 End If (str[0] == str[len - 1]) return 1 End Else return 0 End Step 2 -> int main() declare string str = "tutorialsPoint" set int temp = check(str) If (temp == -1) Print "유효한 입력을 넣어주세요" End Else if (temp == 1) Print "첫 번째와 마지막 문자가 같습니다" End Else Print "같지 않음" 종료
C++ 구현 예제
#include<iostream>
using namespace std;
// 첫 번째 문자와 마지막 문자가 같은지 검사하는 함수
int check(string str) {
int len = str.length();
if (len < 2)
return -1;
if (str[0] == str[len - 1])
return 1;
else
return 0;
}
int main() {
string str = "tutorialsPoint";
int temp = check(str);
if (temp == -1)
cout<<"enter valid input";
else if (temp == 1)
cout<<"yes it have first and last equal characters";
else
cout<<"Not equal";
}
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
yes it have first and last equal characters
코드 설명
위 예제에서 테스트에 사용된 문자열은 "tutorialsPoint"입니다. 이 문자열은 첫 글자가 't'이고 마지막 글자 역시 't'이므로 두 문자가 동일하여 함수가 1을 반환하고, 화면에는 두 문자가 같다는 메시지가 출력됩니다.
이 프로그램의 시간 복잡도는 O(1)입니다. 문자열의 길이와 관계없이 첫 번째 문자와 마지막 문자 단 두 개만 비교하면 되기 때문입니다. 추가 메모리 사용도 거의 없어 매우 효율적인 방법이라 할 수 있습니다.