algorithm/백준
[백준] 등장하지 않는 문자의 합 - 3059 Java[자바]
달마루
2023. 3. 22. 21:44
[Unrated] 등장하지 않는 문자의 합 - 3059
3059번: 등장하지 않는 문자의 합
입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 한 줄로 구성되어 있고, 문자열 S가 주어진다. S는 알파벳
www.acmicpc.net
성능 요약
메모리: 18240 KB, 시간: 260 ms
분류
구현, 문자열
문제 설명
알파벳 대문자로 구성되어있는 문자열 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에 등장하지 않는 알파벳 대문자의 아스키 코드 값의 합을 한 줄에 하나씩 출력한다.
답 : 배열을 만들어
알파벳 등장 여부를 확인하고
등장하지 않은 알파벳의 아스키 코드 값을 더해준다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt(); // 테스트 데이터의 수
for (int i = 0; i < t; i++) {
String s = sc.next(); // 문자열 입력
int sum = 0;
boolean[] alphabets = new boolean[26]; // 알파벳이 등장했는지 여부를 저장하는 배열
// 입력된 문자열을 순회하며 알파벳 등장 여부를 체크한다
for (int j = 0; j < s.length(); j++) {
int index = s.charAt(j) - 'A';
alphabets[index] = true;
}
// 등장하지 않은 알파벳의 아스키 코드 값을 합산한다
for (int j = 0; j < 26; j++) {
if (!alphabets[j]) {
sum += (j + 'A');
}
}
System.out.println(sum);
}
sc.close();
}
}