import java.io.*;
import java.util.*;
class Main {
public static void main(String args[]) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 아스키코드 97~122 => a~z
// 단어S
char[] S = br.readLine().toCharArray();
// 단어에 포함되어있는 알파벳 개수를 출력할 배열
int[] alphabet = new int[26];
// 입력받은 단어를 쪼개 알파벳 별 인덱스의 위치에 1을 증가시킨다.
for (int i = 0; i < S.length; i++) {
alphabet[(int) S[i] - 97] += 1;
}
// 결과문 출력
for (int i = 0; i < alphabet.length; i++) {
System.out.print(alphabet[i] + " ");
}
}
}
해결방법
아스키코드에 대한 이해만 있다면 쉽게 풀 수 있는 문제였다. 아스키코드의 a~z값은 97~122로 이루어져있다.
따라서 입력받은 문자열을 하나의 알파벳으로 변경하기 위해 toCharArray를 사용하여 배열S에 담아주었고, 알파벳의 개수는 총 26개로 배열을 선언하였다.
S의 길이만큼 반복문을 수행하며, 알파벳에서 아스키코드의 a값을 뺀 인덱스에 1을 증가시켜주었다.