Algorithm/BOJ(Baekjoon Online Judge)

[백준 - 3059번] 등장하지 않는 문자의 합 - Java //Wello Horld//

koucop 2019. 8. 14. 15:24

이번에는 BOJ의 3059번 문제 "등장하지 않는 문자의 합" 을 풀어보도록 하자

총 대문자의 개수 26개 만큼의 boolean 배열을 만들어 주고, 수학적으로 문자열 S에 등장하지 않는 알파벳 대문자의 아스키 코드 값을 ans에 더해주는 방식으로 문제를 풀었다.

성공한 코드는 아래와 같다

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int T = Integer.parseInt(br.readLine());
        for(int i = 0; i < T; i++){
            String line = br.readLine();
            boolean[] alpha = new boolean[26];
            for(int j = 0; j < line.length(); j++){
                if(!alpha[line.charAt(j) - 'A']) alpha[line.charAt(j) - 'A'] = true; 
            }
            int ans = 0;
            int cnt = 0;
            for(int j = 0; j < alpha.length; j++){
                if(!alpha[j]){
                    ans += j;
                    cnt++;
                }
            }
            ans += cnt * 65;
            bw.write(ans + "\n");
        }

        bw.flush();
        br.close();
        bw.close();
    }
}

 

문제 : https://www.acmicpc.net/problem/3059

 

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

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

www.acmicpc.net