Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++로 문자열에서 첫 번째 대문자 찾기 — 반복문과 재귀 두 가지 방법

이 튜토리얼에서는 주어진 문자열에서 첫 번째 대문자를 찾는 방법을 알아보겠습니다. 먼저 간단한 예시를 살펴볼까요?

입력: 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++에서 문자열 내 첫 번째 대문자를 찾는 두 가지 방법, 즉 반복문 방식재귀 방식을 살펴보았습니다. 반복문 방식은 코드가 직관적이고 이해하기 쉬운 반면, 재귀 방식은 코드가 간결하지만 문자열이 길 경우 스택 오버플로우 위험이 있으므로 상황에 맞게 선택하는 것이 좋습니다. 튜토리얼에 대해 궁금한 점이 있다면 댓글로 남겨주세요!