문자열 'str'에 여러 개의 문자가 포함되어 있다고 가정해 보겠습니다. 이때 주어진 문자열의 모든 문자가 대문자인지 아닌지를 검사하고, 그 결과를 True 또는 False로 반환하는 것이 과제입니다.
입력 및 출력 예시
입력 1 −
str = "INDIA"
출력 −
True
설명 − 입력 문자열의 모든 문자가 대문자이므로, 이 경우 true를 반환합니다.
입력 2 −
str = "Programmer"
출력 −
False
설명 − 첫 글자를 제외한 나머지 문자들이 대문자가 아니므로, 이 경우 false를 반환합니다.
문제 해결 접근 방식
주어진 문자열에서 모든 문자가 대문자인지 확인해야 합니다. 이를 위해 문자열의 각 문자를 하나씩 순회하면서 해당 문자가 'A' 이상이고 'Z' 이하인지 검사합니다.
조건이 참이라면 카운터 값을 증가시킵니다. 그런 다음, 카운터 값이 문자열의 전체 길이와 같은지 다시 확인하여 같으면 true를, 그렇지 않으면 false를 반환하면 됩니다.
문자열 'str'을 입력받습니다.
불리언 함수 checkCapital(string s)은 문자열을 입력으로 받아, 문자열의 모든 문자가 대문자일 경우 true를 반환합니다.
카운터 변수를 선언하고 0으로 초기화합니다.
문자열을 순회하면서 현재 문자가 'A'부터 'Z' 범위에 속하는지 확인하고, 조건이 참이면 카운터 변수를 1 증가시킵니다.
카운터 값이 문자열의 크기와 같은지 확인한 뒤, 그 결과에 따라 True 또는 False를 반환합니다.
카운터가 0이거나(모든 문자가 소문자), 대문자가 단 하나이며 그 위치가 문자열의 맨 앞인 경우에도 true를 반환합니다.
예제 코드
#include<bits/stdc++.h>
using namespace std;
bool checkCapital(string s){
int counter=0;
int loc=0;
for(int i=0;i<s.size();i++){
if(s[i]>='A' && s[i]<= 'Z'){
counter++;
loc=i;
}
}
if(counter==s.size() || counter==0 ||(counter==1 && loc==0))
return true;
return false;
}
int main(){
string str= "INDIA";
bool ans= checkCapital(str);
if(ans){
cout<<"True"<<endl;
} else {
cout<<"False"<<endl;
}
return 0;
}출력 결과
위 코드를 실행하면 다음과 같은 출력이 생성됩니다.
True
입력 문자열 'INDIA'는 모든 문자가 대문자로 구성되어 있으므로, 출력 결과로 "True"를 얻게 됩니다.