[백준 3059] 등장하지 않는 문자의 합 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
주어진 문자열에 등장하지 않은 알파벳 대문자들의 아스키 코드값의 총합을 구하는 문제입니다.
- 먼저 테스트케이스의 개수가 주어지고, 이어서 각 테스트케이스마다 하나의 문자열이 입력됩니다.
- 각 문자열은 모두 대문자로만 구성되어 있습니다.
- 문자열에 포함되지 않은 알파벳(A~Z)에 대해, 해당 알파벳의 아스키 코드값을 모두 더한 값을 출력합니다.
접근법
- 테스트케이스 수를 입력받습니다.
- 각 문자열에 대해, 알파벳 등장 여부를 저장할 배열(크기 26)을 초기화합니다.
- 문자열의 각 문자를 순회하며 해당 알파벳의 등장 여부를 기록합니다.
- 등장하지 않은 알파벳에 대해,
i + 65
를 이용하여 아스키 코드값을 더합니다. - 총합을 출력합니다.
A
의 아스키 코드값은65
이고,Z
는90
입니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
class Program {
static void Main() {
int t = int.Parse(Console.ReadLine());
while (t-- > 0) {
string str = Console.ReadLine();
var seen = new bool[26];
foreach (var c in str)
seen[c - 'A'] = true;
int sum = 0;
for (int i = 0; i < 26; i++)
if (!seen[i]) sum += (char)('A' + i);
Console.WriteLine(sum);
}
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t; cin >> t;
while (t--) {
int cntAlpha[26] = {0, }, ans = 0;
string str; cin >> str;
for (auto i : str)
cntAlpha[i - 65]++;
for (int i = 0; i < 26; i++) {
if (!cntAlpha[i]) ans += i + 65;
}
cout << ans << "\n";
}
return 0;
}