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

C++로 이름 이니셜 자동 추출하기: 단계별 구현 가이드

이 프로그램에서는 한 사람의 이름을 나타내는 문자열 name이 주어집니다. 우리의 목표는 C++을 사용하여 이름의 이니셜(첫 글자)을 찾아내는 프로그램을 작성하는 것입니다.

문제 설명

주어진 문자열 형태의 이름에서 각 단어의 첫 글자, 즉 이니셜을 추출하여 출력해야 합니다.

예제로 문제 이해하기

입력

name = "ram kisan saraswat"

출력

R K S

설명

이름을 구성하는 각 단어의 첫 번째 문자를 찾아 대문자로 변환하면 됩니다. 'ram'의 'R', 'kisan'의 'K', 'saraswat'의 'S'가 이니셜이 됩니다.

해결 접근 방법

이 문제의 가장 간단한 해결 방법은 이름 문자열을 처음부터 끝까지 순회(traverse)하는 것입니다. 탐색 과정에서 다음 규칙을 적용합니다.

  • 문자열의 첫 번째 문자는 항상 이니셜이므로 대문자로 변환하여 출력합니다.
  • 공백 문자(' ') 또는 줄바꿈 문자('\n') 바로 뒤에 오는 문자도 새로운 단어의 시작이므로 이니셜에 해당합니다.
  • 모든 이니셜은 대문자로 변환하여 출력합니다.

C++ 구현 코드

위 접근 방식을 실제로 구현한 프로그램은 다음과 같습니다.

예제 코드

#include <iostream>
using namespace std;

void findNameInitials(const string& name) {
    cout << (char)toupper(name[0]);
    for (int i = 0; i < name.length() - 1; i++)
        if (name[i] == ' ' || name[i] == '\n')
            cout << " " << (char)toupper(name[i + 1]);
}

int main() {
    string name = "ram kisan\nsaraswat";
    cout << "The initials of the name are ";
    findNameInitials(name);
    return 0;
}

실행 결과

The initials of the name are R K S

코드 동작 원리

findNameInitials 함수는 먼저 문자열의 첫 글자를 toupper() 함수로 대문자화하여 출력합니다. 이후 반복문을 통해 문자열을 순회하면서 공백이나 줄바꿈 문자를 만나면, 그 다음 위치의 문자를 대문자로 변환하여 출력합니다. 이 방식은 시간 복잡도 O(n)으로 매우 효율적이며, 공백과 줄바꿈이 섞여 있는 입력도 정확하게 처리할 수 있습니다.