import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int[] arr = new int[26];
String s = bf.readLine();
for(int i = 0; i < s.length(); i ++ ) {
if ('a' <= s.charAt(i) && s.charAt(i) <= 'z') { // 소문자일 경우
arr[s.charAt(i) - 97]++;
} else { // 대문자일 경우
arr[s.charAt(i) - 65]++;
}
}
int max = -1;
char ch = '?';
for(int i = 0; i < 26; i++){
if(arr[i] > max) { // 제일 많이 카운트된 알파벳 구하기
max = arr[i];
ch = (char)(i + 65);
}
else if (arr[i] == max) {
ch = '?';
}
}
System.out.println(ch);
}
}
사용자로부터 입력받은 영어단어 중 각 알파벳의 사용 빈도수를 측정해서 제일 빈도가 높은 알파벳을 찾는 알고리즘이다. 소문자나 대문자는 상관 없으며, 최대 빈도수가 없는 경우엔 '?' 를 출력하도록 한다.
a~z 까지의 카운트를 할 배열을 만들어준다.
입력받은 단어를 한 글자씩 사용 빈도를 카운트 해야함으로 BufferedReader 로 입력 받은 readLine 을 문자열에 저장한 후 소문자일 경우 -97을 하여 알파벳의 해당 배열에 +1 을 진행한다.
대문자일 경우 -65하여 똑같이 진행한다.
이 후 반복문을 통해 max 값을 찾고 해당 배열의 알파벳을 ch 에 담아 출력한다.
charAt(i)을 사용하면 각 문자로 출력됨을 알게 되었다.char 형은 아스키 코드로 계산될 수 있음을 알게 되었다.