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

C++로 문자열에서 가장 큰 ASCII 값의 문자 찾는 방법

이 문제에서는 하나의 문자열이 주어지며, 우리의 과제는 C++에서 문자열 내에 있는 문자들 중 가장 큰 ASCII 값과 가장 작은 ASCII 값을 가진 문자를 찾는 프로그램을 작성하는 것입니다.

문제 설명

여기서 다루는 문자열에는 대문자와 소문자가 모두 포함되어 있습니다. 이 문자열에서 ASCII 값이 가장 큰 문자와 가장 작은 문자를 각각 찾아야 합니다.

입력 예시

str = "TutorialsPoint"

출력 예시

Largest = u
Smallest = P

문제 풀이 접근법

ASCII 값의 특성을 이해하면 문제를 쉽게 해결할 수 있습니다. ASCII 코드 체계에서 대문자(A~Z)는 항상 소문자(a~z)보다 작은 값을 가집니다.

  • 대문자 중 가장 작은 ASCII 값을 가진 문자는 'A'(65)입니다.
  • 소문자 중 가장 큰 ASCII 값을 가진 문자는 'z'(122)입니다.

따라서 위 예시에서 가장 작은 문자는 대문자 'P'가 되고, 가장 큰 문자는 소문자 'u'가 됩니다.

해결 방법

가장 간단한 접근 방식은 문자열을 처음부터 끝까지 순회하면서 각 문자의 ASCII 값을 비교하여 최댓값과 최솟값을 찾는 것입니다. C++에서는 문자 자체를 비교 연산자(>, <)로 비교하면 자동으로 ASCII 값을 기준으로 비교가 수행됩니다.

구현 코드

#include <iostream>
using namespace std;

void findMaxMinAlphabet(char str[], int n){
    char maxChar = str[0];
    char minChar = str[0];
    for(int i = 0; i < n - 1; i++){
        if (str[i] > maxChar)
            maxChar = str[i];
        if(minChar > str[i])
            minChar = str[i];
    }
    cout<<"Maximum Alphabet: "<<maxChar<<"\nMinimum Alphabet: "<<minChar;
}

int main() {
    char a[]= "TutorialsPoint";
    int size = sizeof(a) / sizeof(a[0]);
    findMaxMinAlphabet(a, size);
    return 0;
}

실행 결과

Maximum Alphabet: u
Minimum Alphabet: P

코드 동작 원리

  1. 문자열의 첫 번째 문자를 초기 최댓값(maxChar)과 최솟값(minChar)으로 설정합니다.
  2. 반복문을 통해 문자열의 모든 문자를 순회합니다.
  3. 현재 문자가 maxChar보다 크면 maxChar를 갱신하고, minChar보다 작으면 minChar를 갱신합니다.
  4. 순회가 끝나면 최종적으로 가장 큰 ASCII 값의 문자와 가장 작은 ASCII 값의 문자를 출력합니다.

이 알고리즘의 시간 복잡도는 O(n)으로, 문자열의 길이에 비례하여 한 번만 순회하면 되므로 매우 효율적입니다.