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에 등장하지 않는 알파벳 대문자의 아스키 코드 값의 합을 한 줄에 하나씩 출력한다.
풀이)
알파벳의 위치를 담은 array 하나 만들어주고
입력에 따라 해당 array에 ++를 해주었다.
이후 해당 array를 다시 돌면서 갯수가 세어지지 않은 알파벳을 아스키코드를 이용하여 합해주었다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#include <iostream>
#include <string>
using namespace std;
int main()
{
int t;
string word;
cin >> t;
for (int i = 0; i < t; i++) {
int arr[26] = { 0 }, ans = 0;
cin >> word;
for (int j = 0; j < word.length(); j++) {
arr[(word[j] - 'A')]++;
}
for (int j = 0; j < 26; j++) {
if (arr[j] == 0) {
ans += j + 'A';
}
}
cout << ans << "\n";
}
return 0;
}
|
cs |
'Develop > 백준 (Cpp)' 카테고리의 다른 글
[백준] 4493번 : 가위 바위 보? (C++) (0) | 2023.02.05 |
---|---|
[백준] 4470번 : 줄번호 (C++) (0) | 2023.02.05 |
[백준] 2789번 : 유학 금지 (C++) (1) | 2023.02.04 |
[백준] 2484번 : 주사위 네개 (C++) (0) | 2023.02.04 |
[백준] 2495번 : 연속구간 (C++) (1) | 2023.02.04 |