공부하기/백준

[Java] 백준 풀기 10808 - 알파벳 개수

XEV 2023. 2. 3. 23:02

자바 백준 10808번

브론즈 4

https://www.acmicpc.net/problem/10808

 

10808번: 알파벳 개수

단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다.

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 구현, 문자열

 

 

 

 

 

문제 풀기

char 타입의 ASCII 코드 연산을 통해 풀이한다.

char 타입으로 저장된 알파벳은 정수와 사칙연산을 통해 int 타입을 반환한다. 이를 이용하여 각 알파벳의 종류를 판별할 수 있다. 판별된 알파벳은 26 개의 배열에 그 개수만큼 누적합한다.

각각의 알파벳이 누적합 된 array 의 value 를 답안에 맞게 출력한다.

 

 

 

 

 

코드 보기

import java.util.Scanner;

public class Main {
    public static void main(String args[]) {
        
        Scanner sc = new Scanner(System.in);
        
        int[] alphabet = new int[26]; // 각 알파벳 개수를 저장할 배열.
        char[] wordArr = sc.next().toCharArray(); // 단어를 입력받고 각 알파벳을 char 타입으로 변환하여 배열에 저장.
        
        for (int i = 0; i < wordArr.length; i++) { // 배열에 저장된 단어를 하나씩 빼내어 ASCII 코드 연산을 함.
            System.out.println(wordArr[i]); // TEST PRINT
            System.out.println(wordArr[i] - 97); // TEST PRINT
            
            alphabet[wordArr[i] - 97] += 1; // 소문자 a 에 해당하는 ASCII 코드 97 에서 해당 알파벳을 뺀 배열 index 의 값을 하나씩 증가.
        }
        
        for (int i = 0; i < alphabet.length; i++) {
            System.out.print(alphabet[i] + " "); // 답안 형식에 맞게 출력.
        }
        
    }
}



/*

baekjoon

b
1
a
0
e
4
k
10
j
9
o
14
o
14
n
13

1 1 0 0 1 0 0 0 0 1 1 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 



abcxyz

a
0
b
1
c
2
x
23
y
24
z
25

1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 

*/