반응형
https://www.acmicpc.net/problem/3059
문제
알파벳 대문자로 구성되어있는 문자열 S가 주어졌을 때, S에 등장하지 않는 알파벳 대문자의 아스키 코드 값의 합을 구하는 프로그램을 작성하시오.
문자열 S가 “ABCDEFGHIJKLMNOPQRSTUVW” 일 때, S에 등장하지 않는 알파벳 대문자는 X, Y, Z이다. X의 아스키 코드 값은 88, Y는 89, Z는 90이므로 이 아스키 코드 값의 합은 267이다.
알파벳 대문자의 아스키 코드 값은 다음과 같다.
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 |
입력
입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 한 줄로 구성되어 있고, 문자열 S가 주어진다. S는 알파벳 대문자로만 구성되어 있고, 최대 1000글자이다.
출력
각 테스트 데이터에 대해, 입력으로 주어진 문자열 S에 등장하지 않는 알파벳 대문자의 아스키 코드 값의 합을 한 줄에 하나씩 출력한다.
예제 입력 1 복사
2
ABCDEFGHIJKLMNOPQRSTUVW
A
예제 출력 1 복사
267
1950
코드
#include <iostream>
#include <string>
using namespace std;
int main() {
int test;
cin>>test;
for(int i=0; i<test; i++){
string str;
cin>>str;
int len = str.length();
int arr[26]={0};
int cnt=0;
for(int i=0; i<len; i++){
cnt = str[i] - 65; // A = 65 Z = 90
arr[cnt]++; // 문자열에서 쓴 문자는 = 1, 안쓴 문자는 = 0
}
int sum=0;
for(int i=0; i<26; i++){
if(arr[i]==0){
sum+=i+65; // 안쓴 문자들을 다 더한다.
}
}
cout<<sum<<"\n";
}
return 0;
}
|
cs |
반응형
'백준 > C++' 카테고리의 다른 글
[BaeKJoon/C++] 백준 1978 c++ 소수 찾기 (0) | 2022.02.16 |
---|---|
[BaeKJoon/C++] 백준 5598 c++ 카이사르 암호 (0) | 2022.02.15 |
[BaeKJoon/C++] 백준 3460 c++ 이진수 (0) | 2022.02.13 |
[BaeKJoon/C++] 백준 2581 c++ 소수 (0) | 2022.02.12 |
[BaeKJoon/C++] 백준 9094 c++ 수학적 호기심 (0) | 2022.02.11 |