본문 바로가기
Develop/백준 (Cpp)

[백준] 3059번 : 등장하지 않는 문자의 합 (C++)

by Tarra 2023. 2. 4.

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

출처 : https://www.acmicpc.net/problem/3059 

 

3059번: 등장하지 않는 문자의 합

입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 한 줄로 구성되어 있고, 문자열 S가 주어진다. S는 알파벳

www.acmicpc.net