YJ/C++

[백준/BOJ/C++] 3059번 등장하지 않는 문자의 합

Team DAON 2021. 10. 18. 16:46

[문제]

알파벳 대문자로 구성되어있는 문자열 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에 등장하지 않는 알파벳 대문자의 아스키 코드 값의 합을 한 줄에 하나씩 출력한다.

 

[Source Code]

#include <stdio.h>
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;

int main() {
	int test;
	cin >> test;
	int *result = new int[test];
	for(int i = 0; i < test; i++){
		int alph[26] = {0};
		int sum = 0;
		string s;
		cin >> s;

		for(int j = 0; j < s.length(); j++){
			int num = (int)s[j] - 65;
			alph[num]++;
		}

		for(int j = 0; j < 26; j++){
			if(alph[j] == 0)
				sum += (j+65);
		}
		result[i] = sum;
	}

	for(int i = 0; i < test; i++){
		cout << result[i] << "\n";
	}
}

[결과 화면]