임의의 길이를 가진 문자열이 주어졌을 때, 문자열을 구성하는 알파벳 중 ASCII 값이 주어진 정수 k보다 작은 문자와 크거나 같은 문자의 개수를 각각 계산하는 것이 이번 문제의 목표입니다.
대문자 A~Z의 ASCII 값
| A | B | C | D | E | F | G | H | I | J | K | L | M |
| 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 |
| N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
| 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 |
소문자 a~z의 ASCII 값
| a | b | c | d | e | f | g | h | i | j | k | l | m |
| 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 |
| n | o | p | q | r | s | t | u | v | w | x | y | z |
| 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 |
입력 및 출력 예시
입력 − str = "TuTorials PoinT", int k = 100
출력 −
- ASCII 값이 k보다 작은 알파벳의 개수 − 6
- ASCII 값이 k보다 크거나 같은 알파벳의 개수 − 9
설명 −
k가 100으로 주어졌으므로 문자열에 포함된 각 문자의 ASCII 값을 확인합니다. T는 84 < 100, u는 117 > 100, o는 111 > 100, r은 114 > 100, i는 105 > 100, a는 97 < 100, l은 108 > 100, s는 115 > 100, P는 80 < 100, n은 110 > 100입니다. 따라서 ASCII 값이 k보다 작은 알파벳은 총 6개이고, k보다 크거나 같은 알파벳은 총 9개입니다.
입력 − str = "HellO All", int k = 90
출력 −
- ASCII 값이 k보다 작은 알파벳의 개수 − 3
- ASCII 값이 k보다 크거나 같은 알파벳의 개수 − 5
설명 −
k가 90으로 주어졌으므로 문자열에 포함된 각 문자의 ASCII 값을 확인합니다. H는 72 < 90, e는 101 > 90, l은 108 > 90, l은 108 > 90, O는 79 < 90, A는 65 < 90, l은 108 > 90, l은 108 > 90입니다. 따라서 ASCII 값이 k보다 작은 알파벳은 총 3개이고, k보다 크거나 같은 알파벳은 총 5개입니다.
프로그램에서 사용된 접근 방식
- 대문자와 소문자로 이루어진 문자열과 정수 k를 입력받습니다.
- str.length() 함수를 사용해 문자열의 길이를 계산하고, 이후 처리를 위해 함수에 전달합니다.
- k보다 작은 값의 개수를 저장할 임시 변수 count를 선언하고 0으로 초기화합니다.
- i를 0부터 문자열 길이까지 반복하는 FOR 루프를 시작합니다.
- 루프 안에서 조건문 IF를 통해 str[i] < k인지 검사하고, 참이라면 count를 1 증가시킵니다.
- k보다 작은 값의 개수(count)를 반환합니다.
- k보다 크거나 같은 값의 개수는 int greater = len - Less_than(str, k, len); 처럼 전체 길이에서 뺀 값으로 계산합니다.
- 결과를 출력합니다.
예제 코드
#include <bits/stdc++.h>
using namespace std;
//ASCII 값이 k보다 작거나 크거나 같은 알파벳의 개수 세기
int Less_than(string str, int k, int length){
int count = 0;
for (int i = 0; i < length; i++){
if (str[i] < k){
count++;
}
}
return count;
}
int main(){
string str = "TuTorials PoinT";
int k = 100;
int len = str.length();
cout<<"Count of alphabets having ASCII value less than k are: "<<Less_than(str,k, len);
int greater = len - Less_than(str,k, len);
cout<<"\nCount of alphabets having ASCII value equals or greater than k are: "<<greater;
return 0;
}실행 결과
위 코드를 실행하면 다음과 같은 출력이 생성됩니다 −
Count of alphabets having ASCII value less than k are: 6 Count of alphabets having ASCII value equals or greater than k are: 9