이 튜토리얼에서는 주어진 문자열에서 첫 번째 대문자를 찾는 방법을 알아보겠습니다. 먼저 간단한 예시를 살펴볼까요?
입력: Tutorialspoint
출력: T
이 문제는 크게 두 가지 방식으로 해결할 수 있습니다. 하나는 반복문을 사용하는 방법이고, 다른 하나는 재귀 함수를 사용하는 방법입니다. 각각 자세히 살펴보겠습니다.
방법 1: 반복문(Iterative) 활용
반복문을 사용한 해결 절차는 다음과 같습니다.
- 문자열을 초기화합니다.
- 문자열을 처음부터 끝까지 순회합니다.
isupper함수를 사용해 현재 문자가 대문자인지 확인합니다.- 대문자라면 해당 문자를 즉시 반환합니다.
예제 코드
#include <bits/stdc++.h>
using namespace std;
char firstUpperCaseChar(string str) {
for (int i = 0; i < str.length(); i++) {
if (isupper(str[i])) {
return str[i];
}
}
return 0;
}
int main() {
string str = "Tutorialspoint";
char result = firstUpperCaseChar(str);
if (result == 0) {
cout << "No uppercase letter" << endl;
} else {
cout << result << endl;
}
return 0;
}실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
T
문자열 "Tutorialspoint"에서 가장 앞에 등장하는 대문자 'T'가 정상적으로 출력되는 것을 확인할 수 있습니다.
방법 2: 재귀(Recursive) 함수 활용
재귀 방식으로 문제를 해결하는 절차는 다음과 같습니다.
- 문자열을 초기화합니다.
- 문자열과 인덱스를 매개변수로 받는 재귀 함수를 작성합니다.
- 현재 문자가 문자열의 끝이라면 종료 값을 반환합니다.
- 현재 문자가 대문자라면 해당 문자를 반환합니다.
- 그렇지 않다면 인덱스를 1 증가시켜 자기 자신을 다시 호출합니다.
예제 코드
#include <bits/stdc++.h>
using namespace std;
char firstUpperCaseChar(string str, int i = 0) {
if (str[i] == '\0') {
return 0;
}
if (isupper(str[i])) {
return str[i];
}
return firstUpperCaseChar(str, i + 1);
}
int main() {
string str = "Tutorialspoint";
char result = firstUpperCaseChar(str);
if (result == 0) {
cout << "No uppercase letter";
} else {
cout << result << endl;
}
return 0;
}실행 결과
위 코드를 실행하면 동일하게 다음 결과를 얻습니다.
T
마무리
지금까지 C++에서 문자열 내 첫 번째 대문자를 찾는 두 가지 방법, 즉 반복문 방식과 재귀 방식을 살펴보았습니다. 반복문 방식은 코드가 직관적이고 이해하기 쉬운 반면, 재귀 방식은 코드가 간결하지만 문자열이 길 경우 스택 오버플로우 위험이 있으므로 상황에 맞게 선택하는 것이 좋습니다. 튜토리얼에 대해 궁금한 점이 있다면 댓글로 남겨주세요!